思维碎片

这是一篇草稿了很多年的文章,算是一些记录吧


回复LX1 年前 {LX1 年前: 世界就是由计算机二进制语言组织起来的。不错。}二进制,包括其它的任何理论,都是一种抽象,而抽象必然伴随着信息的丢失。任何理论,都是对现象的描述,不是现象本身。我好像扯太远了

1 年前
已经不记得是初中还是小学时,生出的一个奇怪念头:每个人是否都是在做梦,从一生下来就在做梦,直到最后的醒来,就是死亡。


161221  写给iOS开发人员的一条原则,这些内容好像是不言而喻,应该是开发人员的必备意识

使用任何一个变量(包括对象、属性)时,要事先保证其有效性,尤其是通过调用各类接口返回的值,至少包括以下几种类型:

  • a. 网络接口(比如通过http返回并解析的json)
  • b. 调用操作系统api返回的值(含对象)
  • c. 通过类型转换返回的值,比如json
  • d. 一段时间未使用的系统资源,如socket, 打开的文件handle, 数据库连接对象

非法的使用无效变量后,进程(或线程)立即终止;如果是进程或UI线程异常终止,程序就必然崩溃了闪退。
(在windows程序、java程序、python程序,甚至javascript、php这类解释型程序里,都是如此,我没写过iOS程序,想必也是一样)


161205  BOM开会,

如何利用别人(外界)对我的认识、改善自己的工作.
我作为别人的“外界”,如何反馈出对他人的认识,以便让别人参考,客观评判、不加主观臆断

谁拿结果,谁主导做


程序开发中的命名空间。数据库(包括表前缀、表名、字段名)、变量等等,都有关。引入前缀的目的是避免冲突。而不是“看起来整齐”。事实上,这种所谓的整齐,同时意味着辨识度低,很容易看错。试想,在一大堆长得很像的名字里,一眼区分谁是谁,真有难度。举例:一个站点自用的一数据库,表前缀为了所谓的“整齐好看”,对每个表加个前缀。一个典型是当年动易CMS的数据库(在虚拟主机环境下,很多主机商限制只能有一个数据库,所以动易数据表可能要与别的应用共存在数据库里,所以这个表前缀某些时候还是有用的)。更无语的是,有人更进一步,前缀就是本数据库名,这实在是自找麻烦,掩耳盗铃。同样,对于变量命名,也是类似。相反,在一个庞大的程序代码里,存在相互包含(include),这种情况下,被包含的文件,里面的变量命名,非常有必要使用一定的前缀,以避免冲突。否则将成为调试的噩梦。


fengyqf
2月21日 23:12 来自 微博 weibo.com
哲学,是起源于古希腊的一门学问。哲理,只是名字上带个“哲”字的文学片段。


运营上成功的产品,未必在技术上成功,所以市面上一些成功的产品,未必是好的技术参考。如wordpress, discuz等


横向沟通协作,主动了解,主动提供 from 161029公司培训


痛点、亮点、弯道超车点。 网易考拉CEO总结的三个重要点 from 电视节目《总裁读书会》 161106

MySQL/MariaDB已被锁表运行中热复制为副本/innodb表错误Table xx doesn't exist in engine处理

从数据表热复制说起。

在执行特别慢的语句时,mysql经常会锁表。这时如果想并行执行另一个语句,但表被锁而该语句只能排队。这种情况下,希望能将被锁的表复制个副本,就可以“假”并行执行;然而杀死前语句又太可惜。所以,运行中热复制的技巧(奇技淫巧)还是有用的。

对于MyISAM表,直接复制三个文件到另一数据库中,即时生效,很方便。为了稳妥起见,最好先检查表看是否有异常;有时会因为写入而提醒表损坏,repair table 修复一下就好。

但对于InnoDB表,就要复杂一些。首先,step-0) 确保已通过MySQL服务的匹配文件,启用单文件选项 innodb_file_per_table=1 ,这样每个表会生成两个文件。但你并不能直接复制它们了,因为你将在新表上得到一条错误 Table xx doesn't exist in engine,所以这样不行。而是,step-1) 你应该在目标数据库里创建一张完全相同的表,然后 step-2) 修改新表丢弃其表空间,语句如 ALTER TABLE `xx` discard tablespace; 之后,step-3) 把源表的 .ibd文件复制过来覆盖新表的同名文件。step-4) 重新导入新表空间 ALTER TABLE `xx` import tablespace;  step-5) 最好也检查下表,至此新表正常可用。