https://www.tenouk.com/Winsock/Winsock2example.html
Create empty solution
Add input to ws2_32.lib
define _WINSOCK_DEPRECATED_NO_WARNINGS
2018年11月20日 星期二
2018年11月19日 星期一
Git on Windows Shared drive
On Server:
172.16.18.77
3389
git
git
C:\git
share read write to ricky
On your desktop:
map \\172.16.18.77\git to Z:
git clone Z:\MT4Managers
172.16.18.77
3389
git
git
C:\git
share read write to ricky
On your desktop:
map \\172.16.18.77\git to Z:
git clone Z:\MT4Managers
2018年10月18日 星期四
Redis on Windows Visual Studio C++
https://blog.csdn.net/LG1259156776/article/details/54645745
https://github.com/MicrosoftArchive/redis
Download and extract redis-3.0.zip
Open redis-3.0\msvs\RedisServer.sln with Visual Studio Community 2017 v15.8.3
Compile hiredis and Win32_interop projects to generate hiredis.lib and Win32_Interop.lib in redis-3.0\msvs\x64\Debug
Visual Studio > New > Visual C++ > Empty Project > Project1
1. Copy hiredis.lib and Win32_Interop.lib to Project1 folder
2. Copy *.h from redis-3.0\deps\hiredis\ to Project1\deps\hiredis
async.h
dict.h
fmacros.h
hiredis.h
net.h
sds.h
win32_hiredis.h
zmalloc.h
3. Overwrite fmacros.h from redis-3.0\src\fmacros.h to Project1\deps\hiredis\fmacros.h
4. Copy *.h from redis-3.0\src\Win32_Interop\ to Project1\src\Win32_Interop\
5. Copy win32fixes.c from redis-3.0\src\Win32_Interop\win32fixes.c to Project1\win32fixes.c
6. Select x64, Project1 > Properties > C/C++ > General > Additional Include Directories > .\deps\hiredis\;.\src\;
7. create a.cpp and compile
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctime>
#include "hiredis.h"
#define NO_QFORKIMPL // must add this line
#include "Win32_Interop\win32fixes.h"
#pragma comment(lib,"hiredis.lib")
#pragma comment(lib,"Win32_Interop.lib")
int main() {
using namespace std;
unsigned int j;
redisContext *c;
redisReply *reply;
struct timeval timeout = { 1, 500000 }; // 1.5 seconds
c = redisConnectWithTimeout((char*)"127.0.0.1", 6379, timeout);
if (c->err) {
printf("Connection error: %s\n", c->errstr);
exit(1);
}
reply = (redisReply *)redisCommand(c, "AUTH foobared");
printf("AUTH: %s\n", reply->str);
freeReplyObject(reply);
clock_t begin = clock();
for (int i = 0;i<1000; ++i) {
reply = (redisReply *)redisCommand(c, "publish redisChat %d", i);
//printf("publish: %s\n", reply->str);
freeReplyObject(reply);
}
clock_t end = clock();
double elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
printf("elapsed_secs = %f\n", elapsed_secs); // 0.1s for 1000 commands
/* PING server */
reply = (redisReply *)redisCommand(c, "PING");
printf("PING: %s\n", reply->str);
freeReplyObject(reply);
/* Set a key */
reply = (redisReply *)redisCommand(c, "SET %s %s", "foo", "hello world");
printf("SET: %s\n", reply->str);
freeReplyObject(reply);
/* Set a key using binary safe API */
/*reply = (redisReply *)redisCommand(c, "SET %b %b", "bar", 3, "hello", 5);
printf("SET (binary API): %s\n", reply->str);
freeReplyObject(reply);*/
/* Try a GET and two INCR */
reply = (redisReply *)redisCommand(c, "GET foo");
printf("GET foo: %s\n", reply->str);
freeReplyObject(reply);
reply = (redisReply *)redisCommand(c, "INCR counter");
printf("INCR counter: %lld\n", reply->integer);
freeReplyObject(reply);
/* again ... */
reply = (redisReply *)redisCommand(c, "INCR counter");
printf("INCR counter: %lld\n", reply->integer);
freeReplyObject(reply);
/* Create a list of numbers, from 0 to 9 */
reply = (redisReply *)redisCommand(c, "DEL mylist");
freeReplyObject(reply);
for (j = 0; j < 10; j++) {
char buf[64];
sprintf_s(buf, 64, "%d", j);
reply = (redisReply *)redisCommand(c, "LPUSH mylist element-%s", buf);
freeReplyObject(reply);
}
/* Let's check what we have inside the list */
reply = (redisReply *)redisCommand(c, "LRANGE mylist 0 -1");
if (reply->type == REDIS_REPLY_ARRAY) {
for (j = 0; j < reply->elements; j++) {
printf("%u) %s\n", j, reply->element[j]->str);
getchar();
}
}
freeReplyObject(reply);
return 0;
}
Design Data Structure in Redis
Redis Setup
https://redislabs.com/blog/redis-on-windows-10/
Install Ubuntu on Windows by "Windows Feature" GUI or by command line:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
> sudo apt-get update > sudo apt-get upgrade > sudo apt-get install redis-server > redis-cli -v
> $ sudo vi /etc/redis/redis.conf
requirepass foobared
> sudo service redis-server restart
127.0.0.1:6379> get foo
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth foobared
OK
127.0.0.1:6379> get foo
"bar"
Data Structure
class Summary : public Item {
double orders;
double buyVolume;
double buyPrice;
double sellVolume;
double sellPrice;
double profit;
};
class Quote : public Item {
double bid;
double ask;
};
std::unordered_map<std::string, Summary> items;
std::unordered_map<std::string, Quote> items;
Redis Hashes
https://www.tutorialspoint.com/redis/redis_data_types.htm
Redis hashes are key-value pairs.
redis 127.0.0.1:6379> HMSET user:1 username tutorialspoint password tutorialspoint points 200 OK redis 127.0.0.1:6379> HGETALL user:1 1) "username" 2) "tutorialspoint" 3) "password" 4) "tutorialspoint" 5) "points" 6) "200"
The above represents
class User {
std::string username;
std::string password;
int points;
};
std::unordered_map<std::string, User> users;
users["1"] = User{"name", "password", 200};
Python get set
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0, password='foobared')
r.set('foo', 'bar')
print(r.get('foo'))
Python subscribe to Redis
import redis def main(): try: r = redis.StrictRedis(host='localhost', port=6379, db=0, password='foobared') p = r.pubsub() p.subscribe('redisChat') done = False while not done: message = p.get_message() if message: data = message['data'] if isinstance(data, bytes): print(data) except Exception as e: print(e) if __name__=='__main__': main()
The End
2018年10月11日 星期四
Event schedule in MySQL 8.0
https://dev.mysql.com/doc/refman/5.7/en/create-event.html
1. Create a sample database
use usersdb;create table users (id int, name varchar(32), time datetime);
insert into users values (1, "a", NOW());
select * from users;
2. Create event
delimiter |create event if not exists FiveSeconds on schedule EVERY 5 second
COMMENT 'Saves total number of sessions then clears the table each day'
do
begin
insert into users values (2, "a", NOW());
insert into users values (3, "a", NOW());
set @id = 4;
insert into users values (@id, "a", NOW());
set @id = 5;
insert into users values (@id, "a", NOW());
END |
delimiter ;
The End
2018年10月1日 星期一
Multiple RDP Sessions on Windows 10 Hyper-V
Hyper V
=======
Hyper V
Version 2 (New)
win10 pro
4096MB
No Check Point
Install from DVD
RDPWrap
=======
https://github.com/stascorp/rdpwrap/releases
RDPWrap-v1.6.2.zip
admin cmd.exe > install.bat
net user
========
net user /add user01 Passw0rd
net localgroup administrators user01 /add
net localgroup "Remote Desktop Users" user01 /add
net user /add user02 Passw0rd
net localgroup administrators user02 /add
net localgroup "Remote Desktop Users" user02 /add
net user /add user03 Passw0rd
net localgroup administrators user03 /add
net localgroup "Remote Desktop Users" user03 /add
net user /add user04 Passw0rd
net localgroup administrators user04 /add
net localgroup "Remote Desktop Users" user04 /add
net user /add user05 Passw0rd
net localgroup administrators user05 /add
net localgroup "Remote Desktop Users" user05 /add
=======
Hyper V
Version 2 (New)
win10 pro
4096MB
No Check Point
Install from DVD
RDPWrap
=======
https://github.com/stascorp/rdpwrap/releases
RDPWrap-v1.6.2.zip
admin cmd.exe > install.bat
net user
========
net user /add user01 Passw0rd
net localgroup administrators user01 /add
net localgroup "Remote Desktop Users" user01 /add
net user /add user02 Passw0rd
net localgroup administrators user02 /add
net localgroup "Remote Desktop Users" user02 /add
net user /add user03 Passw0rd
net localgroup administrators user03 /add
net localgroup "Remote Desktop Users" user03 /add
net user /add user04 Passw0rd
net localgroup administrators user04 /add
net localgroup "Remote Desktop Users" user04 /add
net user /add user05 Passw0rd
net localgroup administrators user05 /add
net localgroup "Remote Desktop Users" user05 /add
2018年9月27日 星期四
C# Nancy Simple Web Application
https://dotblogs.com.tw/ricochen/2016/12/22/220117
Visual Studio 2017 > New Project > Windows Desktop > .NET Framework Console Application
Install-Package Nancy.Hosting.Self
Program.cs
using Nancy;using Nancy.Hosting.Self;
using Nancy.ModelBinding;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Threading;
namespace ConsoleApp1
{
public class User
{
public string Name { get; set; }
public int Age { get; set; }
public bool IsAdmin { get; set; }
}
public class TestModule : NancyModule
{
public TestModule()
{
Get["/"] = _ => "Hello Nancy from Get request";
Post["/"] = _ => "Hello Nancy from Post request";
Get["/Home"] = Post["/Home"] = parameters =>
{
var usersmodel = new List<User>();
usersmodel.Add(new User { Name = "rico" });
usersmodel.Add(new User { Name = "sherry" });
this.ViewBag.data = "From Nancy";
return View["index.sshtml", usersmodel];
};
Get["/User/{Name}"] = p =>
{
if (p.Name == "rico")
return $"Admini user #{p.Name}!";
else
return $"Normal user #{p.Name}!";
};
Post["/RequestBody"] = _ =>
{
byte[] data = new byte[this.Request.Body.Length];
this.Request.Body.Read(data, 0, (int)this.Request.Body.Length);
string body = System.Text.Encoding.Default.GetString(data);
User user = JsonConvert.DeserializeObject<User>(body);//Install-Package Nancy.Serialization.JsonNet
return $"Name:{user.Name} Age:{user.Age} IsAdmin:{user.IsAdmin}";
};
Post["/Bind"] = _ =>
{
var requestPOCO = this.Bind<User>();
return $"Name:{requestPOCO.Name}";
};
}
}
public class ClockModule : NancyModule
{
public ClockModule()
{
Get["/clock"] = (args) => {
return new Response
{
ContentType = "text/event-stream",
Contents = (Stream stream) =>
{
var data = Encoding.UTF8.GetBytes("retry: 1000\ndata: " + DateTime.Now.ToString() + "\n\n");
stream.Write(data, 0, data.Length);
stream.Flush();
}
};
};
}
}
class Program
{
public Program()
{
Uri uri = new Uri("http://localhost:9487/");
HostConfiguration hostConfigs = new HostConfiguration
{
UrlReservations = new UrlReservations() { CreateAutomatically = true }
};
NancyHost host = new NancyHost(hostConfigs, uri);
host.Start();
System.Diagnostics.Process.Start(uri.ToString()+"sse.html");
Console.WriteLine(uri);
}
static void Main(string[] args)
{
try
{
new Program();
Console.ReadKey();
} catch (Exception e)
{
Console.WriteLine(e);
}
}
}
}
views/index.html
<body>
<h4>@ViewBag.data</h4>
@Each
<p>Name:@Current.Name</p>
@EndEach
<div id="clock">1970-01-01</div>
<script>
new EventSource("/clock").onmessage = function(event) {
document.getElementById("clock").innerHTML = event.data;
};
</script>
</body>
</html>
Test URL
http://127.0.0.1:9487/http://127.0.0.1:9487/Home
http://127.0.0.1:9487/User/rico
http://127.0.0.1:9487/User/apple
Postman.exe x64
POST http://127.0.0.1:9487/RequestBody > Body > raw:
{"Name":"Rico","Age":"35","IsAdmin":"true"}
POST http://127.0.0.1:9487/Bind > Body < raw + JSON(application/json)
{"Name":"Rico","Age":"35","IsAdmin":"true"}
Server Sent Event
http://127.0.0.1:9487/clock
End
2018年9月11日 星期二
My SQL locks exceeds the lock table size
Error Code: 1206. The total number of locks exceeds the lock table size
show variables like 'innodb_buffer_pool_size';
innodb_buffer_pool_size 8388608
set global innodb_buffer_pool_size=4g;
Access Denied;
"C:\Program Files\MySQL\MySQL Router 8.0\bin\mysqlrouter.exe" -c "C:\ProgramData\MySQL\MySQL Router\mysqlrouter.conf" --service
C:\ProgramData\MySQL\MySQL Router\mysqlrouter.conf
innodb_buffer_pool_size=8M
innodb_buffer_pool_size=4G
2018年8月10日 星期五
Sublime Text for Golang
Install Sublime Text 3
https://packagecontrol.io/installation#st3
Copy text
import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
- Sublime Text > Ctrl+` 调出控制台, 执行上面网页中的 python代码安装 Package Control
- 在sublime中,按住快捷键 shift + ctrl + p,在弹出框中输入install package,并按下回车
- 接着,输入gosublime,并按下回车(可能需要稍微等待下,可以看sublime最下面的状态)
- gosublime安装完成后,点击菜单项Preferences -> package settings -> GoSublime -> Settings - Uesrs,配置GOPATH,GOROOT
- cmd.exe > go env
- set GOPATH=C:\Users\ricky\go
- set GOROOT=C:\Go
- gosublime安装完成后,点击菜单项Preferences -> package settings -> GoSublime -> Settings - Uesrs,配置GOPATH,GOROOT 在打开的窗口里输入如下内容,并保存
{
"env": {
"GOPATH": "C:/Users/ricky/go",
"GOROOT": "C:/Go"
}
}
配置(可选),点击菜单项Tools->Build System->New Build System,在打开的窗口里输入如下内容,并保存GoNewBuildSystem
{
"cmd": ["go", "run", "$file_name"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"working_dir": "$file_path",
"selector": "source.go"
}
https://www.cnblogs.com/simplelovecs/p/5311899.html
安装Golang
go语言主页:
go语言安装下载:
环境变量设置:
GOROOT:
GOROOT变量设置go安装的根目录,windows下,通常是 c:\go
GOPATH:
GOPATH变量设置go源代码存放的根目录
安装 Sublime Text3
首先,安装 Sublime Text 3:
接着,安装 Sublime Text 3 的 Package Control:
运行sublime text 3,按下快捷键 ctrl+` 调出控制台,执行上面网页中的 python代码安装 Package Control,然后重启sublime text 3。
最后,安装插件 GoSublime:
1)在sublime中,按住快捷键 shift + ctrl + p,在弹出框中输入install package,并按下回车
2)接着,输入gosublime,并按下回车(可能需要稍微等待下,可以看sublime最下面的状态)
3)gosublime安装完成后,点击菜单项Preferences -> package settings -> GoSublime -> Settings - Uesrs,配置GOPATH,GOROOT
在打开的窗口里输入如下内容,并保存
1
2
3
4
5
6
| { "env": { "GOPATH": "c:/go", "GOROOT": "d:/GoWorkspace" }} |
4)配置(可选),点击菜单项Tools->Build System->New Build System,在打开的窗口里输入如下内容,并保存
1
2
3
4
5
6
| { "cmd": ["go", "run", "$file_name"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "working_dir": "$file_path", "selector": "source.go"} |
其他参考:
訂閱:
意見 (Atom)
2007 to 2023 HP and Dell Servers Comparison
HP Gen5 to Gen11 using ChatGPT HP ProLiant Gen Active Years CPU Socket Popular HP CPUs Cores Base Clock Max RAM Capacity Comparable Dell ...
-
On CentOS 7, using yum install gives you cmake version 2.8.11 [root@thrift1 ~]# cat /etc/*release CentOS Linux release 7.2.1511 (Core) ...
-
Synology DSM 5.2 on Virtual Box Files On my Google Drive "2016DSM5.2" or download link below (3 files total: pat, iso, exe) ...
-
Static ZeroMQ (difficult setup) cd /d C:\ mkdir Repos cd /d C:\Repos\ git clone https://github.com/Microsoft/vcpkg cd /d C:\Repos\v...

