羽毛的小白板
博客园首页发现一篇奇怪的文章,然后发现这个人还真是脑洞清奇。所以说,奇怪的问题只因为奇怪的人用奇怪的方法产生出来 js.es5 map循环一大坑:循环遍历竟然出现逗号! https://www.cnblogs.com/soyxiaobi/p/9898762.html
最奇怪的是他写了这种代码,好吧是
array.map 不是类似 Ruby 里的 Array#map! 所以优化后可以说是基本等价于 forEach 的/********* ES6 **********/
//一行代码可以省略return
array.map( item => console.log(item))
=>
array.map( item => {
return console.log(item)
})
//多行代码需要{}
array.map( item => {
//do someting 花括号一般是处理某些逻辑
})
//返回组件
array.mao( item => (
<div>{item}</div> //这种比较常出现在react的jsx
))
duangsuse::Echo
我觉得这人(就这篇文章的各种例子而言)有点 low... 😶 有时候感觉知其然并且知其所以然是一种幸福,在别人都只看到表象的时候你能看到本质,所以你不会被各种清奇的问题迷惑也不会被花里胡哨的技巧蒙蔽双眼,总是选择最合适的,而这是只知道 how to 所不能做到的 看到这篇文章突然感觉 Ruby 之类掺了函数式理念的 OOP 真是对工业界帮助好大啊... 区区一个 block 表达能力和自然性(符合直觉、容易理解)吊炸天 别说现在 Enumerable 的集合处理方法了... 接受一个 lambda、block…
现在 OOP 把 PP(面向数据结构 aka. 指令式) 和 FP(函数式) 都给吞了... 就差一个逻辑式了?啊啊啊(其实还有很多)(但大的「范」只有这几个...)
羽毛的小白板
博客园首页发现一篇奇怪的文章,然后发现这个人还真是脑洞清奇。所以说,奇怪的问题只因为奇怪的人用奇怪的方法产生出来 js.es5 map循环一大坑:循环遍历竟然出现逗号! https://www.cnblogs.com/soyxiaobi/p/9898762.html
我跟你们总结一下他是在讲什么:
+ 如何使用
如果你不知道这怎么用,我教你怎么用:
+ 如何使用
String Iterable<String>.join(seprator: String) ...如果你不知道这怎么用,我教你怎么用:
['apple', 'orange', 'pear'].join(" vs. ") //=> "apple vs. orange vs. pear "
如果你是开发者并且发现 pear 后面多了一个空格,我告诉你怎么去除,除非是性能敏感否则这样写已经很好了['a', 'b', 'c'].join(" vs. ").trimRight() //=> "a vs. b vs. c"
如果你好奇它(Array.prototype.join,限于 Array of String)是怎么实现的,我给你一个实现function joinString(strs, seprator = '') {
let buf = [];
strs.forEach(s => { buf.push(s); buf.push(seprator); });
return buf.join('');
}
如果你不止想在集合项之间使用连接(contact)操作,你可以使用 reduce
['a', 'b', 'c'].reduce(console.log)没错,就是这一个姿势点,他居然能写一页... 而且前端还没做好... 而且例子举得居然不是最简用例... 而且废话贼多,我当时还以为他是讲 ES6 里数组的空位
[1,,3] 问题呢(实际上虽然这个是反智的,但 forEach 和 for let 没有这个问题...)
duangsuse::Echo
我跟你们总结一下他是在讲什么: + 如何使用 String Iterable<String>.join(seprator: String) ... 如果你不知道这怎么用,我教你怎么用: ['apple', 'orange', 'pear'].join(" vs. ") //=> "apple vs. orange vs. pear " 如果你是开发者并且发现 pear 后面多了一个空格,我告诉你怎么去除,除非是性能敏感否则这样写已经很好了 ['a', 'b', 'c'].join(" vs. ").trimRight()…
如今的前端啊... too young... sometimes naive 🐸... 算了,因为我的确有点失望,这位前端小哥教的例子到底是最佳实践呢还是半懂不懂的技巧滥用代码呢...
羽毛的小白板
博客园首页发现一篇奇怪的文章,然后发现这个人还真是脑洞清奇。所以说,奇怪的问题只因为奇怪的人用奇怪的方法产生出来 js.es5 map循环一大坑:循环遍历竟然出现逗号! https://www.cnblogs.com/soyxiaobi/p/9898762.html
现在看来其实也没有什么好奇怪的呢... 毕竟尤其是中国,开发者水平差异是巨大。而再重灾区一点的就是 web 前端... 因为他们真的是可以做到干一辈子前端当一辈子码农的 — 你可能看不到他们的技术较 n 年前有什么变化 — 可能都是差不多的,或者说他们对自己代码的「理解层次」根本不会有变化,都只知其一不知其二。
duangsuse::Echo
所以说啊成天写了那么多字在自己的频道上,如果哪天 Telegram 爆炸了,王八蛋 leader durov 跑路了,然后我的数据写了这么多个月的东西全部爆炸 lost 了我都可以进抢救室了... 还是备份一下吧 #telegram #emmm #life #tech
然后我回忆当时 @drakeet 删频道的时候我真的很惊讶啊,他闭源项目和博客也就算了因为数据没有丢失,但如果他没有备份而频道数据丢失了呢... 那自己这么多年积攒的广播都没有了... 他不会珍惜这些东西吗...
This media is not supported in your browser
VIEW IN TELEGRAM
duangsuse 不会 coroutine 呢... 其实我接触 #lua 也是很早之前(十几个月)的事情了,但当时 coro 对我来说只不过是技术名词而已。现在好像也是... 我只知道
Fiber 这种 coro...#Threading in #Kotlin 的 coroutine 「Green Threads 绿色线程」 concept
Forwarded from duangsuse::Echo
正是因为知道的多,所以才知道自己的无知
正是因为懂得多,看得细致、能够透过一行行 C# 代码看到生成的 IL、看到 JIT 编译出的机器代码,才可以发现底层以微粒子形式存在的数据竞争风险和值类型装箱操作的隐患,而不是等到程序已经公开部署、安全漏洞已经被大量利用才迟迟修复
只有肯沉下心来学习知识,才有可能从理解 -> 使用 -> 创造一步步走上去,只有有了更高层次的视角 才能解决别人“不能解决”“无从寻觅”的问题
真正有知识的人的成长过程,与麦穗的成长过程一样:正是因为能透过问题的表象看到本质、透过宏观看到微观,能站在比别人低、比别人靠近本质的地方观察,才能做到「知其变」,才能在技术更新越来越快,各色语法糖变化、语言特性换上新包装的时代里坚守自己永恒不变的真知「守其恒」
麦穗空的时候,麦子长得很快,麦穗骄傲地高高昂起;
但当麦穗成熟饱满时,它们开始谦虚地垂下麦芒。
正是因为懂得多,看得细致、能够透过一行行 C# 代码看到生成的 IL、看到 JIT 编译出的机器代码,才可以发现底层以微粒子形式存在的数据竞争风险和值类型装箱操作的隐患,而不是等到程序已经公开部署、安全漏洞已经被大量利用才迟迟修复
只有肯沉下心来学习知识,才有可能从理解 -> 使用 -> 创造一步步走上去,只有有了更高层次的视角 才能解决别人“不能解决”“无从寻觅”的问题
duangsuse::Echo
我觉得这人(就这篇文章的各种例子而言)有点 low... 😶 有时候感觉知其然并且知其所以然是一种幸福,在别人都只看到表象的时候你能看到本质,所以你不会被各种清奇的问题迷惑也不会被花里胡哨的技巧蒙蔽双眼,总是选择最合适的,而这是只知道 how to 所不能做到的 看到这篇文章突然感觉 Ruby 之类掺了函数式理念的 OOP 真是对工业界帮助好大啊... 区区一个 block 表达能力和自然性(符合直觉、容易理解)吊炸天 别说现在 Enumerable 的集合处理方法了... 接受一个 lambda、block…
rt,这些「大道理」总结起来再修补一下就是这样 #life #tech #dev #statement
+ 正是因为知道的多,所以才知道自己的无知。
正是因为懂得多,看得细致、能够透过一行行 C# 代码看到生成的 IL、看到 JIT 编译出的机器代码,才可以发现底层以微粒子形式存在的数据竞争风险和值类型装箱操作的隐患,而不是等到程序已经公开部署、安全漏洞已经被大量利用才迟迟修复
只有肯沉下心来学习知识,才有可能从使用 -> 理解 -> 创造一步步走上去,只有有了更高层次的视角 才能解决别人“不能解决”“无从寻觅”的问题
+ 有时候感觉知其然并且知其所以然是一种幸福,在别人都只看到表象的时候你能看到本质,所以你不会被各种清奇的问题迷惑也不会被花里胡哨的技巧蒙蔽双眼,总是选择最合适的,而这是只知道 how to 所不能做到的
+ 奇怪的问题只因为奇怪的人用奇怪的方法产生出来
+ 进入互联网、移动互联网时代,软件开发方面的好书层出不穷,绝大部分是技术新、方法新。然而,本书很独特,其出版于 1995 年,至尽已有 20 余年,而其前身 The Little LISPer 更是出版于 1987 年,堪称”古董“!
为什么一本老书还有出版的必要?因为”经典“!因为其内容揭示了计算的一般本质,其价值历经时光的检验而含金量不减! — The Little Schemer 中文翻译译者序
+ 正是因为知道的多,所以才知道自己的无知。
真正有知识的人的成长过程,与麦穗的成长过程一样:+ 正是因为能透过问题的表象看到本质、透过宏观看到微观,能站在比别人低、比别人靠近本质的地方观察,才能做到「知其变」,才能在技术更新越来越快,各色语法糖变化、语言特性换上新包装的时代里坚守自己永恒不变的真知「守其恒」
麦穗空的时候,麦子长得很快,麦穗骄傲地高高昂起;
但当麦穗成熟饱满时,它们开始谦虚地垂下麦芒。
正是因为懂得多,看得细致、能够透过一行行 C# 代码看到生成的 IL、看到 JIT 编译出的机器代码,才可以发现底层以微粒子形式存在的数据竞争风险和值类型装箱操作的隐患,而不是等到程序已经公开部署、安全漏洞已经被大量利用才迟迟修复
只有肯沉下心来学习知识,才有可能从使用 -> 理解 -> 创造一步步走上去,只有有了更高层次的视角 才能解决别人“不能解决”“无从寻觅”的问题
+ 有时候感觉知其然并且知其所以然是一种幸福,在别人都只看到表象的时候你能看到本质,所以你不会被各种清奇的问题迷惑也不会被花里胡哨的技巧蒙蔽双眼,总是选择最合适的,而这是只知道 how to 所不能做到的
+ 奇怪的问题只因为奇怪的人用奇怪的方法产生出来
+ 进入互联网、移动互联网时代,软件开发方面的好书层出不穷,绝大部分是技术新、方法新。然而,本书很独特,其出版于 1995 年,至尽已有 20 余年,而其前身 The Little LISPer 更是出版于 1987 年,堪称”古董“!
为什么一本老书还有出版的必要?因为”经典“!因为其内容揭示了计算的一般本质,其价值历经时光的检验而含金量不减! — The Little Schemer 中文翻译译者序
duangsuse::Echo
#task - [x] 确保 InScript 草稿的安全 - [x] 广播预先规划的知识点们 - [x] 点名器 - [ ] Gekyll - [ ] aRsi tree-walkig 解释器 - [ ] 想办法让 Telegram Desktop Text field 导航时学会将中文全角字符正确切分...
https://www.excel-easy.com/vba/workbook-worksheet-object.html
我们这里有很好的文档,LibreOffice 的 Macro Editor 也不错,但是很可惜 LO 的 Macros 和 MSOffice 的不兼容... 不兼容啊... 😶
很麻烦很麻烦除非我要写 VisualBasic(之前没写过)...
(其实最重要的是要安装 MSOffice,我这里很麻烦,而且 Office 不是个小应用
我们这里有很好的文档,LibreOffice 的 Macro Editor 也不错,但是很可惜 LO 的 Macros 和 MSOffice 的不兼容... 不兼容啊... 😶
很麻烦很麻烦除非我要写 VisualBasic(之前没写过)...
(其实最重要的是要安装 MSOffice,我这里很麻烦,而且 Office 不是个小应用
Excel-Easy
Workbook and Worksheet Object in Excel VBA
Learn more about the Workbook and Worksheet object in Excel VBA. Excel VBA programming involves working with an object hierarchy. This probably sounds quite confusing, but we will make it clear.
比起这个还是写 C++/CMake 吧...
Win32 Native 应用程序比较难搞因为这里没部署 Windows 开发环境也很难部署... 除了 Wine...
Qt 可以考虑一下,正在尝试 Qt
实在不行可以上 C++/Rust Win32 bindings + Wine 测试
算法上主要考虑是一个很简单的算法,程序启动就创建悬浮窗和通知区域图标,点悬浮窗就弹出大号黑框显示被选项目,点通知区域图标就打开设置,允许设置弹窗背景和颜色、悬浮窗背景颜色、点名文件路径
默认文件
考虑到最可能失败的情况是文件无法读取、文件是空白的,都弹出窗口提示错误
如果文件不存在,它提示是否创建文件,如果是,则创建此文件并在记事本里打开
其他错误都弹窗提示
Win32 Native 应用程序比较难搞因为这里没部署 Windows 开发环境也很难部署... 除了 Wine...
Qt 可以考虑一下,正在尝试 Qt
实在不行可以上 C++/Rust Win32 bindings + Wine 测试
算法上主要考虑是一个很简单的算法,程序启动就创建悬浮窗和通知区域图标,点悬浮窗就弹出大号黑框显示被选项目,点通知区域图标就打开设置,允许设置弹窗背景和颜色、悬浮窗背景颜色、点名文件路径
默认文件
randomItems.txt 以系统默认的行结束符切分,如果一行长度为 0 或者全都是空格/Tab 就无视那行考虑到最可能失败的情况是文件无法读取、文件是空白的,都弹出窗口提示错误
如果文件不存在,它提示是否创建文件,如果是,则创建此文件并在记事本里打开
其他错误都弹窗提示
#ifndef FLOAT_WIDGET_H现实很骨感:花了很长时间才做了一个悬浮窗...
#define FLOAT_WIDGET_H
#include <QWidget>
#include <QMouseEvent>
#include <QPoint>
#include <QPixmap>
#include <QDesktopServices>
#include <QUrl>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
private:
QPoint relativePos;
protected:
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
};
#endif // FLOAT_WIDGET_H
#include "float_widget.h"
#include <QPixmap>
#include <QMouseEvent>
#include <QPoint>
#include <QLabel>
#include <QBoxLayout>
Widget::Widget(QWidget *parent): QWidget(parent, Qt::FramelessWindowHint)
{
QLayout *layout = new QBoxLayout(QBoxLayout::TopToBottom);
QLabel *label = new QLabel;
QPixmap *pixw = new QPixmap(size());
pixw->fill(QColor(0x3f,0x51,0xb5,150));
label->setPixmap(*pixw);
label->setText("点名");
layout->addWidget(label);
setLayout(layout);
adjustSize();
}
void Widget::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton){
relativePos = this->pos()- event->globalPos();
}
}
void Widget::mouseMoveEvent(QMouseEvent *event)
{
this->move(event->globalPos() + relativePos);
}
Widget::~Widget()
{
}
This media is not supported in your browser
VIEW IN TELEGRAM
duangsuse::Echo
#project #Cplusplus https://github.com/duangsuse/randomSelection 1+ packaged ❤️
This media is not supported in your browser
VIEW IN TELEGRAM