duangsuse::Echo
717 subscribers
4.26K photos
130 videos
583 files
6.48K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
考虑 bluetooth 本身呢... 是一个近距离通信, IoT 的解决方案
它的徽标好像是从丹麦一位口舌伶俐的国王哪里受到启发,是由拉丁还是希腊... 字母 'B' 和 'H' 组成的
最新的 Bluetooth 4.0 技术提供了低能耗等新特性,不过应用编程模型貌似没有区别
虽然功耗 和速度什么的 应该都是问题,但它的支持相当广泛

https://www.bluetooth.org/en-us/specification/adopted-specifications

如果只是应用的话,过程大概是这样:
这个模型从『自己的设备』有三个对象:

1. BluetoothAdapter,这是你设备的蓝牙适配器,它代表了你的设备(不过是『主语』),它可以有一个外部设备可见的名字
蓝牙是低频无线电通讯的方式,适配器是可以『扫描』和『建立连接』其他设备的东西
2. BluetoothDevice,这是有蓝牙能力的设备,以 Client/Server 方式抽象
你的设备可以通过『pair』配对的方式,和另一个设备连接起来(利用蓝牙的指纹 footprint 标记,地址被称为 address),连接是安全加密的,第三人很难截取窃听。
3. Connection,一般被抽象为 socket (BluetoothSocket, BluetoothServerSocket)
Socket 是计算机网络传输层的一个抽象,可以发送和接受数据

蓝牙有两种模式 -- Server 和 Client (关系 1:N)
Server 可以处理 『accept』 client 的请求,并且请求之间在应用层各自独立,不会出现新请求打断老请求,使得服务无法正常运行的情况

== 一般的应用工作模式 (getDefaultAdapter)

1. 打开(enable)你的蓝牙适配器 (boolean enable, disable, isEnabled; int getState)
.5 你可以选择给设备设置一个名称

Intent enableBh = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBh, REQUEST_ENABLE_BT);

2. 开始扫描(discover)附近的蓝牙设备 (startDiscovery),你可以定时,等一会后继续(这里推荐 Kotlin 使用 await coroutine)
3. 你扫描能得到一个蓝牙的设备集合,他们使用 footprint 作为自己的唯一标识 (Set<BluetoothDevice> getBondedDevices)
4. 你可以对未配对的设备请求配对,只有配对设备之间可以传输用户数据
5. 主控设备可以进入 server 模式,监听连接(listenRFCommWithServiceRecord),客户机可以连接到 paired device 并且发送请求(平等关系判断主从也可以比较随便,知道 ID 即可)
adapter.listenUsingRfcommWithServiceRecord(PROTOCOL_SCHEME_RFCOMM, uuid);
6. 使用 blocking accept (queue 队列) 模式(ServerSocket)串行地对每个请求打开 socket 进行处理(accept 到 client request 后获取 input stream 来 read),注意这不会导致任何请求因为资源被占用而被遗忘
7. 客户机找到服务器后发送数据请求,服务器接收

#Java #Android #unconfirmed
#Math #Phys 隔壁的两力(不算 Gravity)一点问题
#China #Low #CS 可惜啊可惜
Forwarded from Soha 的日常 (Soha Jin)
『某种原因』真的是一个很计算机科学的表述 🌝👍
你们做了什么?开了这么久,到现在连一门自己的语言都没有写,连算法可视化都没做过 为什么要这么死板地做 还是在使用的角度看 作为描述的直觉的编程语言
没有区分 过程式 函数式 面向对象 对程序和数据的处理方式 照搬照抄、模板,没有直觉和对缘由的感知 生搬硬套 应试教育的翻版
为什么 这对国内水准的提高 有帮助吗? 很多人只是为了考试 用用就忘掉了,到头来 抛弃 Dynamic programming 抛弃图算法 抛弃 继承和传递的优化思路 抛弃了所学到的所有 用回手写的辣鸡排序算法 用回暴力搜索

一个美妙的名字 『中国』 的 计算机『学会』 本来应该承载着多少希望,担负着提升国名计算机应用素质的责任重担,现在这样,还不如『同人』的 OJ
这么多年了,为什么不能有点改变呢?
有一个 IDE,不过很老了 而且也没什么特色 可能最多的功能就是调用外部工具了(笑

真的是中国最『称职』的计算机『学』会了,如果要知道为什么我这么夸赞的话 — 是因为『某种极其特殊的原因』
#life #school 这周的 Telegram 消息已经阅读完了
#Java 希望能够重写 SuicideBot 并且为之加上启动 / 退出的 Autosave (user -> time map) 功能,同时,也打算记录退出时间,来自动释放一些用户
那就加一个自杀排行榜吧(啊啊啊啊
啊,才发现定时是 Telegram 自己管理的 直播请在 tmp 观看
Forwarded from duangsuse Throws
Forwarded from dnaugsuz
一方面我是人,一方面我要训练自己重复的能力
Forwarded from dnaugsuz
因为我从重复中实践,从重复中看出可以增强的地方
Forwarded from dnaugsuz
训练是不可避免的,我必须要做到『想什么时候编程,想写些什么模式,都能够立刻做到』
Forwarded from dnaugsuz
这样对我的深度也有帮助
Forwarded from dnaugsuz
不是所有人都一样的
Forwarded from dnaugsuz
我的记忆力很差
Forwarded from dnaugsuz
https://t.me/dsuse_tmp/605

你看,如果我简单地去用 code template,能够把这个『模板』中重复的部分抽提出来吗?能够让我理解 travis 的配置综合模型吗?
实际上重复也是学习本身依赖的重要因素
duangsuse Throws
#statement #dev
有人说『学习的本质是重复』『学习的本质是记忆』,其实未必真是的,但我这里想告诉大家
就是:实践很重要 不要害怕实践 不要害怕去把编程,开新工程当成日常来做(甚至带一点 build system / project management / depolyment 的)

我之所以要当『复读机』,一方面是因为我一直是『复读机』(实际上也没那么严重,甚至比很多人好一些),另一方面是我应该永远学习下去,『未满』才是最好的样子。
所以复读机 我也要当! 在复读的过程中,我训练了自己对代码的阅读记忆能力、看到了各种编程风格,多次的复读,让我有机会深化对模型和技术的理解,让我能够在『刻板』的基础上做出『创新』,并且保证了以后的实践里,我总是能够在第一时间想到『怎么做』

使用模板是好事,因为它避免了重复,可是它却不能让你『弄懂』弄明白
总是『理解记忆』也是好事,可是它却不能保证你真正理解了、记住了,有时候你总是会想不到一些事情、总是会发现自己又忘记了,这样要再次去查
”再次去查“是我最讨厌的东西,因为它意味着,我得重新理解,我对之前的知识还不够深刻以至于要『再次找』,而且它会浪费大量的时间、会搞坏你的心情、阻止你对当前程序的兴趣和理解

我很讨厌『用到就去查』,因为这不利于我系统的理解。你们可以看到,我发的每篇比较长的广播,都是相对系统完整的知识,不是『某个功能,已经有了什么数据,有啥 API 完成某操作』『某件看起来了不得的事情,我实现它的 point 在哪里』然后简单一两行、几个截图完事

相反的,我总是先系统学习某种技术,对于大的系统我会一个一个小片的理解消化,并且在过程中我会留下不少实践编程的碎片,而且不止一种语言。我希望我的每行代码都是有确切理解验证的。 — 就是,必须有编写可运行/可使用代码的验证

这个看起来愚蠢的行为的解释,我已经给出了,你觉得呢?

在信息技术 软件工程里更是如此,缺乏实践验证的理解,你怎么知道你用的时候就真正理解了?
现在那个什么 『Agile Development』 的 TestDrivenDevelopment,仅仅从它对『测试』的看重上,我觉得是对的。因为实际应用要的是至少『有效』『工作』的代码,不是看起来没什么问题实际上无法在某些正常情况下工作的 buggy 代码。

错误发现的越早,其产生的不良影响就越小。
系统理解的战线拖延得越长、产生的误解和漏洞越多,其对实际编程和后继学习产生的不良影响就越大。

这个道理,套用到个人对技术的理解上,不也是一样吗? #statement