duangsuse::Echo
嗯…… 今天终于知道 ncat host port 不止可以 sendto() ,也能 recvfrom() 了 而且,这个送信必须是由手机开 nc -l ,如果是从手机送到电脑,那也是在电脑上 recvfrom() ,不能反向开服 bind() 监听,只能是在网关(手机)上。 好像并不能连接到电脑端 ip addr iface 给的那个 inet 地址,但是网关(即开USB绑定共享的,手机电脑都易拿到地址)就可以联通,非常生草 当然如果只是这样就太没意思了,我写了个基于 #Python + socket/sl4a…
这个玩意当时拿 C 也写了,想做成 #Android 应用的(谅我当时也不够了解对应安卓 API 反正用时查就行)
但是用 C 得手动管理 buffer ,这么简单的缓冲区控制,当时我实现了一半有 bug 好像就不行了,首先是不熟悉 TCP/UDP 的套接字(socket)通信,所以区间有效性、复用生存期什么的就没做好
当时是设计了应用域的 I/O 俩动态 realloc() buffer,写完我不知道类扫描器算法咋写了(显然不能缓冲区溢出也不能丟溢出的数据啊,就加了 MSG_PEEK flag),纯属底层细节太多导致的智商骤降(当时还以为 buffer 一次不能读完得拼接 recvfrom... 类似用 buffer 写的 OutputStream 就很麻烦,总而言之是 ensureSize 写错了没意识到大小是静态的),现在我就了解 SOCK_STREAM 的写法了。 (man socket.h)
但是用 C 得手动管理 buffer ,这么简单的缓冲区控制,当时我实现了一半有 bug 好像就不行了,首先是不熟悉 TCP/UDP 的套接字(socket)通信,所以区间有效性、复用生存期什么的就没做好
当时是设计了应用域的 I/O 俩动态 realloc() buffer,写完我不知道类扫描器算法咋写了(显然不能缓冲区溢出也不能丟溢出的数据啊,就加了 MSG_PEEK flag),纯属底层细节太多导致的智商骤降(当时还以为 buffer 一次不能读完得拼接 recvfrom... 类似用 buffer 写的 OutputStream 就很麻烦,总而言之是 ensureSize 写错了没意识到大小是静态的),现在我就了解 SOCK_STREAM 的写法了。 (man socket.h)
C++11 Unicode 支持_Dablelv的博客专栏-CSDN博客
https://blog.csdn.net/k346k346/article/details/82016543
#cplusplus Unicode wchar/u16/u23 与 multibyte 转化(实际上就实现了 UTF8 字节序列到 int 码点的迭代),总结:
https://blog.csdn.net/k346k346/article/details/82016543
#cplusplus Unicode wchar/u16/u23 与 multibyte 转化(实际上就实现了 UTF8 字节序列到 int 码点的迭代),总结:
typedef codecvt<char16_t,char,mbstate_t> facet_t;
facet=use_facet<facet_t>(locale)
facet.out(mbstate, s0, s1, ps, ds0, ds1, pds)blog.csdn.net
C++11 Unicode 支持_Dablelv的博客专栏-CSDN博客
1.char16_t与char32_t在C++98中,为了支持Unicode字符,使用wchar_t类型来表示“宽字符”,但并没有严格规定位宽,而是让wchar_t的宽度由编译器实现,因此不同的编译器有着不同的实现方式,GNU C++规定wchar_t为32位,Visual C++规定为16位。由于wchar_t宽度没有一个统规定,导致使用wchar_t的代码在不同平台间移植时,可能出现问题。...
duangsuse::Echo
clipboardd.py
#sysadmin #linux 这个
usbIP=
usbTCP=12345
alias usbNc="ncat -i 1 ${usbIP} ${usbTCP} 2>/dev/null"
if [ "$1" = get ]; then
printf -|usbNc
echo
elif [ "$1" != '' ]; then
echo -n +
fi
客户端脚本都写了🌚(附注:这里发不出反引号,等宽字部分就是被反引住 `` 的部分……
后来发现 nc -i 1s 及 2>/dev/null 的重定向可以一起去掉,明明不需要延时的(我脑抽了以为 stdin 重定向是等于启动新 nc 然后键入这些数据,不会EOF)
usbIP=
ip route show 0.0.0.0/0 |awk '{print $3}'usbTCP=12345
alias usbNc="ncat -i 1 ${usbIP} ${usbTCP} 2>/dev/null"
if [ "$1" = get ]; then
printf -|usbNc
echo
elif [ "$1" != '' ]; then
echo -n +
echo "$1"|wc -c:"$1" |usbNcfi
客户端脚本都写了🌚(附注:这里发不出反引号,等宽字部分就是被反引住 `` 的部分……
后来发现 nc -i 1s 及 2>/dev/null 的重定向可以一起去掉,明明不需要延时的(我脑抽了以为 stdin 重定向是等于启动新 nc 然后键入这些数据,不会EOF)
Is there a compact equivalent to Python range() in C++/STL - Stack Overflow
https://stackoverflow.com/questions/13152252/is-there-a-compact-equivalent-to-python-range-in-c-stl
https://stackoverflow.com/questions/13152252/is-there-a-compact-equivalent-to-python-range-in-c-stl
Stack Overflow
Is there a compact equivalent to Python range() in C++/STL
How can I do the equivalent of the following using C++/STL? I want to fill a std::vector with a range of values [min, max).
# Python
>>> x = range(0, 10)
>>> x
[0, 1, 2, 3, 4, 5,...
# Python
>>> x = range(0, 10)
>>> x
[0, 1, 2, 3, 4, 5,...
Forwarded from wjm
Telegram
duangsuse::Echo
这么说吧 我是对的 我不打算听你的话 我就是无敌的 你用来支持观点的例子在我看来都是菜鸡
Forwarded from dnaugsuz
算了呗,凭他们对 Python 元编程动态性的那一点理解,俺继续做俺的项目,不是第一次了
就是很好奇不是立刻封的,那是为什么封的呢……
就是很好奇不是立刻封的,那是为什么封的呢……
Forwarded from dnaugsuz
一群不干好事只晓得语言鄙视链的人,以为自己多聪明,聪明反被聪明误
以为自己能弄出那些别人早已组织好公开的 pattern 就多了不起,其实不过是一群 copycat ,真正搞懂了什么呢
以为自己能弄出那些别人早已组织好公开的 pattern 就多了不起,其实不过是一群 copycat ,真正搞懂了什么呢
Forwarded from dnaugsuz
当然啊,他们的管理员特别不好相处,肯定是有些激进的管理员把我封了,之前就有过争议,懒得再说了
Forwarded from wjm
捕蛇者说
聊聊编程、程序员和 Python
duangsuse::Echo
哇原来我之前在 #Haskell 里看到的就是这种…… 这个大佬很厉害 https://teek.readthedocs.io/en/latest/_modules/teek/_tcl_calls.html#init_threads def _pairs(sequence): assert len(sequence) % 2 == 0, "cannot divide %r into pairs" % (sequence,) return zip(sequence[0::2], sequence[1::2])…
from itertools import islice
def zipWithNext(xs): return zip(xs, islice(xs, 1, None))
list(zipWithNext([1,2,3]))
==[(1, 2), (2, 3)]
#Python
关于 fibonacci 数列, #Haskell 里容易定义:
fibs = 1:1:(zipWith (+) fibs (drop 1 fibs))
这是基于 Haskell 的可复现(无副作用/纯)序列+惰性求值实现的,而 Python 里若用等价的 fibs = chain([1,1], map(operator.add, zip(fibs, islice(1,None)))) 不能成功——表达式组织出generator对象的关键在于 map(add, zip(xs, xs[1:])) 里 zip 的流视口,它肯定要引用靠 zip() 本身生成的数字。
再看 Haskell 的定义等式,其生成式缓存是全局的(当然实现法有很多种但),可以理解为 fibs, (drop 1 fibs) 持 length -2、-1 的索引(此时就没有“预支”流导致循环引用的问题)
fibs = [1,1]
def _fibs_gen(i,n):
fibz = islice(fibs,i,None)
fibz1 = islice(fibz,1,None)
fibs[i:i+n] = map(operator.add, zip(fibz,fibz1))
def gen(buf, op, n_chunk=5):
i0 = 0
while True:
op(i0, n_chunk)
i0 += n_chunk
yield* buf[i:i+n] 如果想写在一行内也可以,但需要
iself() 提供一个隐式上下文的流位置(才能引用自身 不然只能从流头开始),既然这样也就不得不使用 gen() 生成带视口的流了。举个用例,当然索引的可变 boxed ref 弄 it=[i] 就行,关键在于让惰性流(其参数 lambda 的参数1)知道自己在对应 iself() 的什么位置就行。
fibs = iself(lambda fibs: chain([1,1], map(add, zip(fibs, drop(1,fibs)) )) )Haskell GHC 可能没有这样简单,或许它是对 (drop 1 fibs) 进行了仅 1层 的惰性求值?这样性能很差,但写起来更有意思
(不对…… 理解错了, (drop1 fibs) 实际上不需要对「未求值的项」进行计算,它从一开始的 (1:1:) 就已经落后于序列尾2项了)
(所以说有些看起来了不得的东西原来只是太晦涩、不直接了吗……到底还是要缓存)
一般来说
fib 1 = 1
fib 2 = 1 -- (f 3) = (f 2)+(f 1)
fib n = (fib n-1)+(fib n-2) #Haskell #code这是递推法,理论上无缓存性能很渣(当然真的函数式里 memo,cps 属于基础),而上面实现的 py 版则是动态规划(迫真)
Vegard’s blog
General Parser Combinators in Racket
How to implement a general parser combinator framework which handles left-recursive and ambiguous grammars.