Imagine: you get 20 in toinfslow 10 by adding to it 1 ten times.
And a even slower Fibonacci series:
letrec fibslow x y = Cons(x, fun() -> Cons(y, fun() -> sum (fibslow x y) (tail (fibslow x y))));;
Go with take 40 (fibslow 1 1) and you would not get the result as fast as the first one.
OCaml has a lazy module that would delay the evaluation of the expression, and also cache the result. So a lazy list would be faster after calculating once.
About Hacking Conferences
Chinese government has banned its security researchers from participating foreign security conferences this year, and Pwn2Own on Mar. 12-14, which Chinese dominated for years, was impacted by this new policy. And Zhou Hongyi, chief executor of 360, has previously stated that these loopholes ‘should remain in China’.
Learning Kana Input…
ろぬふあう えおやゆよ わほへ
` 1 2 3 4 5 6 7 8 9 0 - =
たていすか んなにらせ ゛゜む
q w e r t y u i o p [ ] \
ちとしはき くまのりれ け
a s d f g h j k l ; ’
つさそひこ みもねるめ
z x c v b n m , . /
Use shift key for smaller kana. E.g. ゃ is entered with Shift + 7.
Misc
Was yea erra hymme sarla yorr.
About Vocaloid
Kemu was probably once troubled by Suzumu, a member of Kemu VOXX, and who had a similar style. Kemu came back with Haikei Doppelganger in 2017, which possibly refers to Suzumu.
After the admitting the ghostwriting of some of his songs, Suzumu announced that he would retire from making vocaloid songs in 2017. Which means the Bookmark of Demise Project stopped without ending.
Mafumafu is said to had bad terms with Suzumu, which brought a lot damage to him.
Powapowa-P, a.k.a. Shiina Mota, deceased at 20, with a red pen. The cause of his death was not revealed.
Samfree died at 31 from illness. Recommend his Promise, although a lot may have already known it from Project Diva.
MySQL does not support data integrity check(that is, it parses but ignores CHECK constraint).
MariaDB was the same but started implementing it since 10.2.
PostgreSQL is likely to support this feature.
Facts about Arch Linux
Arch Linux has only in its official repo MariaDB 10.1 because of this.
updpkgsums is a command line tool to update the checksums in the PKGBUILD file.
Running makepkg with -s would install the dependencies for it, and -i would install the package built.
trizen, aurman are also AUR helpers, the same as yaourt, pacaur.
Facts about CentOS 7
It uses Linux 3.10.
The packages in EPEL can be very old as well.
The lttng package in EPEL is ver 2.4.
Fact about Oracle
It sucks.
Facts about Input Methods
The author of Flypy(http://www.flypy.com) is stingy about the double pinyin scheme they created – they haunt every developer of an input method which make Flypy available – either as preset or configurable afterwards – without their authorization.
Rime, GBoard, and MS IME seem not (yet) in trouble.
The author of Flypy criticized others’ approach to tackle zero-consonant characters(‘a’, ‘er’, ‘ou’, etc.) from their perspective. Flypy uses the first and the last letter of the syllable(‘ee’ for ‘e’, ‘ag’ for ‘ang’, etc.), while some others allocate a specific letter, say, ‘o’, for it.(That is, ‘oa’ for ‘a’, ‘ol’ for ‘ai’ for MS).
A family of double pinyin derives from Ziranma, with minor differences. MS and Sogou are among them.
Mozc could be configured using /usr/lib/mozc/mozc_tool --mode=config_dialog, where the input mode could be switched between Romaji and Kana.
Arch Linux uses Bash(Bourne Again Shell) for POSIX shell (/bin/sh)
When Bash is called with sh, it tries to emulate the POSIX shell
Dash is POSIX compatible, making it Bash incompatible.
Facts about of V-Table
In C++, the virtual table pointer is located in the head of the class instance.
The virtual table is a table of pointer to virtual(overridden or not) functions.
Therefore, to invoked these virtual methods, a mechanism called thunk(a jocular form of think) is needed. It means doing something before the actual function is called. And functional language relies largely on this mechanism.
Fact about Zeromq
It is a distributed communication library.
It sits on top of the TCP/IP layer, means the possibility is huge that it sends message by syscalls like send.
Facts about lttng
Means Linux Tracing Tool, next generation
In Artful repo, for older Ubuntu versions, go to ppa:lttng
Can be used to trace syscall, or even user application(need to write code into the program)
babeltrace could be used to translate the file.
Facts about Ubuntu
The life span of Zesty(17.04) has ended in Jan. 2018. Artful will meets its end in Jul. 2018.
The life span of non-LTS versions is 9 months.
18.04 is called Bionic, will upgrade later
Facts about Opam
The package manager of OCaml. Not a kind of mineral.
The type could be expressed in an algebra-like manner:
0: None type, there is 0 way to construct an empty type object
1: Singleton
2: Two ways to construct the type, boolean type is an example
: Sum type, the object of type could be either type a or type b, but not both, there are exactly ways to construct the object. Injection is used to construct an instance, if it is called an instance.
: Product type, the object of type is a combination of an object of type a and one of type b. OCaml adopts this notation, an constructor applied to type is written as `Foo of a*b`.
And as a surprising yet unsurprising coincidence, the sum and product obey the rules:
Communicative:
Associative:
Distributive:
For recursive types like the tree, which is
dataTree a = Leaf a | Branch (Treea) (Treea)
The formula is:
Therefore, we have:
(Why choose the minus sign?)
Use Taylor series, we could obtain:
And the coefficients of a are Catalan numbers.
Zippers means we could turn the pocket inside out and focus on one element in a data structure, in a way that updating the focused element , as well as moving the focus around, takes time.
And we can focus on the holes of a type.
has one hole of a
has two holes of a, that is `data _, a` and `data a, _`
It is likened to partial differentiation, for example:
If means the hole numbers of a in t, and let the g of constant be zero, and g of other variables be one, then magic!
It can be applied to the list type:
dataList a = [] | Cons a (Lista)
, take both sides' derivative of a, we got:
and. Bravo! That is the zipper type, one pointing to left and the other right.
Added 3/29:
But the same thing could not be perfectly applied to the binary tree type.
Recall, we have the binary tree type:
dataTree a = Leaf | Branch a (Treea) (Treea)
Then the formula is:
The best I could get is about:
, and the is a list of type .
According to LYAHFGG, the zipper of a binary tree should be something like this:
dataCrumbs a = LeftCrumb a (Treea) | RightCrumb a (Treea) typeBreadCrumbs a = [Crumbs a] typeZipper a = (Treea, Breadcrumbsa)
It is easy to see that Crumbs a has a type of and BreadCrumbs a has a type of .
But wait! That gives rather than a in the numerator.
Maybe we’ve just started wrong, like, we took the wrong differentiation.
That would be left for future investigation.
Misc
PEBKAC (Problem Exists Between Keyboard And Chair) is the word that describes user error.