cygwin安装MySQL并作为windows服务启动

cygwin安装MySQL并作为windows服务启动

一 安装 MariaDB (MySQL)#

注意 在Cygwin中,安装的是MariaDB(貌似是个开源的分支?以下就用MySQL代替MariaDB)并不是MySQL

以管理员身份运行cygwin,执行以下命令安装MySQL

mysql_install_db

以守护进程方式启动MySQL服务器

mysqld_safe &

然后运行以下命令设置密码,此时密码为空,直接回车登录

mysql_secure_installation

然后既可以正常登录了

mysql -u root -p

二 将MySQL安装为Windows服务#

以管理员身份运行以下命令停止MySQL服务,密码是你刚才更新的密码

mysqladmin.exe -u root -p shutdown

使用cygrunsrv

cygrunsrv.exe -I mysqld -d “CYGWIN MariaDB server” -p /usr/bin/mysqld_safe

启动服务

cygrunsrv -S mysqld

简易配置openbox

openbox
opmenu—选择安装主题,修改鼠标行为,设置桌面。
obmenu—-用来配置窗口管理器的其它部分。
stalonetray—-系统托盘
Tint22—-任务栏
xfce4-panel—另一种任务栏
openbox-themes—-
OpenBox的个人配置文件只有:
~/.config/openbox/autostart.sh
~/.config/openbox/menu.xml
~/.config/openbox/rc.xml
$ sudo update-menus 获取原始数据,生成配置文件
/etc/X11/openbox/*
/etc/xdg/openbox/*
从这里把menu.xml和 rc.xml 拷贝到 ~/.config/openbox/里
$ sudo vim ~/.config/openbox/autostart.sh

$GLOBALAUTOSTART

墙纸

hsetroot - fill ~/wallpaper.jpg
xcompmgr -f -F -c -t-5 -l-5 -r4.2 -o.55 &

DOCK 设置,可以设成别的dock,不过不加dock也行

cairo-dock &

独立托盘

stalonetray -W –sticky -t –fuzzy -edges 3 –geometry 4x24 +O -O –skip-taskbar –respect -icon -hints &

保存后,进入openbox桌面
$ exec /openbox/bin/openbox-session
1 启动obmenu,原有的菜单不喜欢,就改。
2 用obconf修改dock的设置,这个“独立托盘”就会自动隐藏了

《安和桥》-歌词

安和桥—–词曲宋冬野

让我再看你一遍
从南到北
像是被五环路,蒙住的-双眼
请你再讲一遍
关于那天

抱着盒子的姑娘
和擦汗的男人

我知道 那些夏天
就像青春一样回不来

代替梦想的也只能是勉为其难

我知道 吹过的牛逼
也会随青春一笑了之
让我困在城市里
纪念你

让我再尝一口
秋天的酒
一直往南方开
不会太久

让我再听一遍
最美的那一句

你回家了
我在等你呢

我知道 那些夏天
就像青春一样回不来

代替梦想的也只能是勉为其难

我知道 吹过的牛逼
也会随青春一笑了之
让我困在城市里 纪念你

我知道 那些夏天
就像你一样回不来

我也不会再对谁满怀期待

我知道 这个世界
每天都有太多遗憾
所以你好 再见

ubuntu安装Wine

一 安装wine, 以在debian12下为例

  1. 开启32位架构的支持

    1
    2
    3
    sudo dpkg --add-architecture i386  #必须先执行这一个
    sudo apt update # 这一点很重要
    sudo apt upgrade -y # 这一点很重要
  2. 下载添加wine的仓库密钥

    1
    2
    3
    $ sudo mkdir -pm755 /etc/apt/keyrings
    $ sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
    # 上一句因为网站问题,总是不成功,但在win11下竟然能下载https://dl.winehq.org/wine-builds/winehq.key 这个文件,于是copy到 /etc/apt/keyrings/目录下,并改名为 winehq-archive.key
  3. 添加wine的仓库(适合Ubuntu22.04,别的ubuntu版本请在wine官网上找)

    1
    2
    $ sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources
    # 上一句因为网站问题,总是不成功,但在win11下竟然能下载https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources, 于是copy到 /etc/apt/sources.list.在/目录下
  4. 更新并安装wine的包

    1
    2
    3
    4
    5
    6
    7
    sudo apt update  # 必须升级
    sudo apt install --install-recommends winehq-stable #稳定分支
    # 或者
    sudo apt install --install-recommends winehq-devel #开发分支
    # 因为 dl.winhq.org的网址非常难以到达,很不成功。 于是
    $ vim /etc/apt/sources.list.d/winehq-bookworm.sources
    把文件中的 https://dl.wineqh.org/wine-builds/debian/ 改为 https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/

二 安装wine依赖环境(很重要)

  1. 安装winetricks,Wine的辅助配置工具,超级便利

    1
    2
    sudo apt install --install-recommends winetricks # debian得到wine网站上下了 

  2. 安装字体,解决Wine及初始配置界面乱码

    将以下 simfang.ttf 、 simhei.ttf 、 simkai.ttf 、simsun.ttc 字体文件复制到 Wine 安装路径下的字体目录 /opt/wine-stable/share/wine/fonts 即可。如果有别的需求,也可以将更多字体复制到该目录下,比如微软雅黑字体文件 msyh.ttf 、 msyhbd.ttf。

  3. 安装Wine依赖,终端下执行

    1
    2
    3
    $ winetricks
    如果因网络原因winetricks无法安装与执行,则运行
    $ winecfg # 进行配置

初始执行 winecfg或 wine 或 winetricks ,会要求下载安装 wine-mono 和 wine-gecko ,这是一个相对漫长的过程,并且中途还可能出错,有可能需要反复多次才能下载安装成功。这些依赖文件是下载安装在: ~/.cache/wine 目录下的。

然后会出现界面,选择默认容器,安装配置,用鼠标选择

1
2
3
4
5
6
7
8
corefonts colorprofile
fontfix fontsmooth-gray fontsmooth-rgb fontsmooth-bgr
gdiplus
d3dx9
riched20 riched30 # 很重要,关系到输入中文时的输入框问题
mfc40 mfc42
vcrun6 vb6run vcrun2003 vcrun2005 vcrun2008
msxml3 msxml4 msxml6

也可以在终端下用命令行形式安装,效率更高。

1
2
3
4
5
6
7
8
$ winetricks corefonts colorprofile
$ winetricks fontfix fontsmooth-gray fontsmooth-rgb fontsmooth-bgr
$ winetricks gdiplus
$ winetricks d3dx9
$ winetricks riched20 riched30
$ winetricks mfc40 mfc42
$ winetricks vcrun6 vb6run vcrun2003 vcrun2005 vcrun2008
$ winetricks msxml3 msxml4 msxml6

这些依赖,将会下载安装到: ~/.cache/winetricks 目录下。

  1. Wine配置

    1
    $ winecfg

    就打开了Wine配置窗口,其实在winetricks中也能打开。

三 安装微信
1
2
到腾讯网站上下载微信windows版的安装软件weixin*.exe,然后鼠
标点击它,右键,选择wine安装就行

更推荐的方式是以 Wine 添加 - 删除程序
去完成,如下:
终端下执行: wine uninstaller

四 后遗症

以上步聚安装完wine,并成功运行微信后,本来是正常的,可是发现硬盘可用空间不断的缩小,以致于影响到别的软件的运行。于是

1
2
3
$ df -lh #查看硬盘空间,发现己经没有多少可用空间了。
$ du -h --max-depth=1 #查看到认底是哪个目录占用了多少空音
# 发现是 ~/.wine 竟然在不停地吞噬可用硬盘空间。

于是只好删除wine,还是用了vbox

streamlit学习笔记七-----与AG Grid的结合

以前把数据读出来并展示,可用st.table()st.dataframe() 来展示,但是如果想在表格上来点花活,比如直接编辑,排序,查找之类的,还要写额外的代码。好在,streamlit的作者引入了AG Grid。AG Grid是一个功能齐全且高度可定制的JavaScript数据网格。它提供了出色的性能,不需要第三方依赖,并且可以与所有主要的JavaScript框架流畅地集成

1 安装
1
$ pip install streamlit-aggrid
2. 例子
1
2
3
4
5
from st_aggrid import AgGrid
import pandas as pd

df = pd.read_csv('产品列.csv')
AgGrid(df) # 只展示表格

执行 $ streamlit run example.py,就可看到表格了,这里只把excel数据读出来,做了展示,如果想进行编辑的话,则改动一下。

1
2
3
4
5
from st_aggrid import AgGrid
import pandas as pd

df = pd.read_csv('产品列.csv')
new_df = AgGrid(df,editable=True) # 可编辑,并把编辑后的值存入new_dr中

编辑可指示只编辑其中一列,一个单元等,需要设置

3 一些参数

AgGrid(datafram-格式数据,

gridOption—–操作说明,格式为字典格式

height=整数—–高度,默认为400

width=整数——宽度,2.0版己取消宽度设置

fit_columns_on_grid_load—–网格宽度的列宽自适应。默认为False。

update_mode—-定义了网格如何装结果发回给streamlit,必须是一个字符串。一个或以下的组合

data_return_mode—-定义如何从客户组件检索数据

    DataReturnMode.AS_INPUT–>返回输入的网格数据

    DataReturnMode.FILTERED—>返回过滤后的网格数据,包括单元版本

    DataReturnMode.FILTERED_AND_SORTED—>返回过滤和排序的网格数据

allow_unsafe_jscode—-允许在gridOptions中注入javascropt 代码,默认不行

enable_enterprise_modules—加载Ag-Grid企业模块,默认不加载

license_key—-企业模块的许可证密钥,默认无

try_to_convert_back_to_original_types—-尝试转换原始数据类型,默认为真

reload_data—-强制AgGrid使用api调用重新加载的数据,默认为不

theme—Ag-Grid的主题,    streamit—->默认streamlit主题    light——>ag-grid的balham-light主题,    dark—->ag-grid的balham-黑色主题,  blue, fresh, material,缺省为light主题

)

4. 更多编辑示例,请见 更多例子

streamlit学习笔记五-----暂称全局变量吧

在编写一个streamlit代码时,发现有一个变量会在几个函数中使用,可是可这个变量如果定义在外的话,每个函数调用改变它后,虽的函数再调用,这个变量并不是上次改过的值,值还是初始化时赋的值。比如 代码一
1
2
3
4
5
6
7
8
9
10
11
12
import streamlit as st

st.title('代码一例子')
count = 0

increment = st.button('增加')
if increment:
count += 1

st.write('Count = ', count)

# 这个代码执行后,不管你咋按那个按钮,count都是1。
肿么才能避免呢? 采用 st.session_state,streamlit把它叫做 ”会话状态“
1
2
3
4
5
6
7
8
9
10
import streamlit as st

# 检查 'key' 是否存在于 session_state 中
# 如果不存在,则初始化之
if 'key' not in st.session_state:
st.session_state['key'] = 'value'

# 另一种语法
if 'key' not in st.session_state:
st.session_state.key = 'value'

一. 采用 “会话状态”,那么代码一可以改为代码二

1
2
3
4
5
6
7
8
9
10
11
12
import streamlit as st

st.title('代码一改为代码二')
# 检查 'count' 是否在 session_state中
if 'count' not in st.session_state:
st.session_state.count = 0

increment = st.button('增加')
if increment:
st.session_state.count += 1

st.write('Count = ', st.session_state.count)

二. 使用 “会话状态” 与 “回调函数” 来修改代码一

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import streamlit as st

st.title('采用回调来更改代码一')
# 检查 'count' 是否在 session_state中
if 'count' not in st.session_state:
st.session_state.count = 0

# 定义函数,一会儿就要回调它
def increment_counter():
st.session_state.count += 1

# 在 st.button里回调函数 increment_counter()
st.button('Increment', on_click=increment_counter)

st.write('Count = ', st.session_state.count)

三. 以上的回调函数是木有参数的,那么如果有参数呢?

1. 使用 args 小部件来传递参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import streamlit as st

st.title('回调函数有参数')
if 'count' not in st.session_state:
st.session_state.count = 0

increment_value = st.number_input('输入一个数值', value=0, step=1)

# 函数有参数
def increment_counter(increment_value):
st.session_state.count += increment_value
# 采用 args 把参数导入
increment = st.button('Increment', on_click=increment_counter,
args=(increment_value, ))

st.write('Count = ', st.session_state.count)
2. 使用 kwargs 传递命名参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import streamlit as st

st.title('回调参数用 kwargs 传递参数')
if 'count' not in st.session_state:
st.session_state.count = 0

def increment_counter(increment_value=0):
st.session_state.count += increment_value

def decrement_counter(decrement_value=0):
st.session_state.count -= decrement_value

st.button('Increment', on_click=increment_counter,
kwargs=dict(increment_value=5))

st.button('Decrement', on_click=decrement_counter,
kwargs=dict(decrement_value=1))

st.write('Count = ', st.session_state.count)

四. 会话状态(全局变量)与 小部件中的值关联,采用 “key” 参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import streamlit as st

if "celsius" not in st.session_state:
# set the initial default value of the slider widget
st.session_state.celsius = 50.0

st.slider(
"Temperature in Celsius",
min_value=-100.0,
max_value=100.0,
key="celsius" # 采用 key 把slider小部件中的值与全局变量celsius关联
)

# This will get the value of the slider widget
st.write(st.session_state.celsius)

ubuntu18.04后,修改DNS

  • 修改配置文件

    1
    2
    3
    4
    5
    6
    7
    $ sudo install resolvconf # 安装后会在生成/etc/resolvconf文件夹。
    $ cd /etc/resolvconf/resolv.conf/
    $ vim base 增加以下语句
    nameserver 114.114.114.114
    nameserver 8.8.8.8
    $ # 保存退出
    $ resolvconf -u
  • 重启服务查看

    1
    2
    3
    4
    $ sudo systemctl restart systemd-resolved.service
    # 更新修改后的设置
    $ resolvectl status
    # 查看更改后的设置

ubuntu19.04后,待机后wifi失联,如何找回?

ubuntu18.04后的版本,18.10忘记有没有这个缺陷了,反正是19.04就有,待机回来,wifi就的不到了。只能重启动才能找回。

有没有解决办法呢,后来在网上找了好久,才找到。是新的版本不支持老wifi协议了,可是家里的路由器还是老的。
方法如下:

第一步 (也可不用)

vim /etc/modprobe.d/iwlwifi.conf 在最后一行加入
options iwlwifi 11n_disable=1

第二步 (ubunt20.04中试了,不用第一步,直接这一步也行)

sudo modprobe -r iwlwifi
sudo modprobe iwlwifi
然后重新搜索wifi就可以连接上路由器了。

ubuntu开机默认控制台

一 启动为控制台。

1. 修改 /etc/default/grub文件

把GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash “ 改为 GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash text”
GRUB_TERMINAL=console前的注释取消掉

2.
1
2
$ sudo update-grub
$ sudo systemctl set-default multi-user.target
重启电脑就直接进入控制台了,可是字体为毛这么小?

如果想要恢复启动默认进入图形界面,把/etc/default/grub文件改回后,还要执行
$ sudo update-grub
$ sudo systemctl set-default graphical.target
$ reboot

二. 修改控制台字体,最好在GUI环境修改好。

执行 sudo dpkg-reconfigure console-setup
然后一步一步设置吧,重启电脑。可是为毛显示文件名,中文文件夹是菱形?

三. 中文控制台

1
2
3
4
5
$ sudo apt install fbterm   # 中文终端 fbterm
$ sudo apt install fcitx-frontend-fbterm # fbterm下的中文输入法
$ sudo fbterm # 会生产 .fbtermrc文件。
$ exit 退出 fbtermrc
$ vim .fbtermrc

font-names=sans
font-size=14
text-encodings=utf8
input-method=fcitx-fbterm

1
$ sudo fbterm