Skip to content

Instantly share code, notes, and snippets.

View lemenkov's full-sized avatar

Peter Lemenkov lemenkov

View GitHub Profile
@lemenkov
lemenkov / newlangs.md
Last active September 23, 2016 11:47

Олег Фатеев признается в подзамочном посте, что становится фанатом Golang. Свою любовь он объясняет горутинами и быстрой сборкой. В следующем же посте он не совсем справедливо утверждает, что в РФ не пишут новые языки программирования (формально контрипримером тут Kotlin, но в главном-то он прав), и в камментах к этому посту Игорь Щекалев выражает сомнение в необходимости создания новых языков сейчас. Контрпримером тут я сразу же привел Swift и Golang, ведь "раз звезды зажигают, это кому нибудь нужно", на что Игорь возразил следующим образом:

[Golang] мне показался унылой смесью Erlang (из которого целиком тянута концепция каналов и все связанное с ней) с С#, откуда взято все остальное. Единственные плюсы (для кого-то) - компактный рантайм и портабильность.

Не могу согласиться с Игорем.

Языки создавать нужно, потому что сильно изменяется класс задач, и доступная техника. Навскидку, я выделю такие области применения, для которых требуются новые языки:

  • Языки, компилирующие в
@lemenkov
lemenkov / unix_dgram.erl
Created September 9, 2016 15:11
How to write to DGRAM UNIX-socket using Erlang
{ok, UnixSock} = gen_udp:open(0, [local]).
gen_udp:send(UnixSock, {local, "/dev/log"}, 0, "HELLO").
@lemenkov
lemenkov / sync_branches.sh
Created July 26, 2016 15:58
Sync branches from remote "fedora" to remote "fedora-erlang"
#!/bin/sh
git push fedora-erlang refs/remotes/fedora/fedora-*:refs/heads/fedora-*
@lemenkov
lemenkov / run_erl_minimal.sh
Created May 13, 2016 17:38
Run minimal Erlang VM
#!/bin/bash
#
# https://news.ycombinator.com/item?id=11690917
#
erl -noshell +sbwt none -smp disable +A 0 -mode minimal -eval 'io:format("Hello world~n").' -s init stop
@lemenkov
lemenkov / test.erl
Created January 25, 2016 13:47
error_logger flood
-module(test).
-export([main/0]).
main() ->
error_logger:tty(false),
ok = error_logger:logfile({open, "/dev/null"}),
Binary = [ {B, hello, {complex, [{object, [1,2,3,4]}, 5,6,7,8,9]}} || B <- lists:seq(1,20) ],
print(Binary).
@lemenkov
lemenkov / BTDigg.xml
Created October 14, 2015 15:22
BTDigg search plugin which uses HTTPS
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/">
<os:ShortName>BTDigg</os:ShortName>
<os:Description>BTDigg - BitTorrent DHT search engine</os:Description>
<os:InputEncoding>UTF-8</os:InputEncoding>
<os:Image width="16" height="16">data:image/x-icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAHYBAAB2AQAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wAB0oiYAdKIXf///wD///8AAdKIHwHSiNMB0og3////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAHSiOAB0ojWAdKIA////wAB0oh9AdKI/wHSiIH///8A////AAHSiFMB0oiW////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAHSiEgB0ojOAdKITP///wAB0ogCAdKI8gHSiP8B0ohuAdKIPAHSiNIB0oj/AdKIoP///wAB0og7AdKI8AHSiNH///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAdKIUQHSiP8B0ojwAdKIVAHSiGsB0oj/AdKI/wHSiP8B0oj/AdKI/wHSiP8B0ojuAdKIs
@lemenkov
lemenkov / kickstart-fedora.ks
Created October 2, 2015 15:32
A very minimal Fedora kickstart
install
url --url="http://mirror.yandex.ru/fedora/linux/development/23/x86_64/os/"
lang en_US.UTF-8
keyboard us
# python -c "import crypt, getpass, pwd; print crypt.crypt('testpass', '\$6\$86XQ0WSE\$')"
rootpw --iscrypted $6$86XQ0WSE$xFUpTag3yF1sU7gBNpZs2YOgezvTgHx8vVarmM3DVrjJYRFQa6ovpENVtXsMDE2m0avQaL/BpvDEETdzs5gJI1
services --disabled iptables,ip6tables,netfs
services --enabled ntpd
firewall --disabled
@lemenkov
lemenkov / make_node.sh
Created September 8, 2015 13:56
How to setup Virtual node using kickstart injection
#!/bin/sh
KSNAME=node00
VIRTNAME=$KSNAME-`date +%Y-%m-%d`
virt-install --connect=qemu:///system \
--network=bridge:virbr0 \
--location=http://mirror.yandex.ru/centos/7/os/x86_64/ \
--initrd-inject=/root/kickstart.ks \
--extra-args="ks=file:/kickstart.ks ip=dhcp console=tty0 console=ttyS0,115200 ksdevice=eth0" \
--name=${VIRTNAME} \
--disk /var/lib/libvirt/images/${VIRTNAME}.img,size=20 \
@lemenkov
lemenkov / consumer.txt
Last active August 29, 2015 14:27
Find a memory consuming task(s) in Erlang
/usr/bin/erl -setcookie <secretcookie> -sname test@example-com -remsh rabbit@example-com
lists:reverse(lists:keysort(1, [fun(P) -> {memory, M} = erlang:process_info(P, memory), {M, P} end (Pid) || Pid <- erlang:processes()])).
# http://levgem.livejournal.com/261075.html?nojs=1
# https://azunyanmoe.wordpress.com/2011/04/01/getting-process-information-of-erlang-runtime-system/
# http://www.erlang.org/doc/efficiency_guide/profiling.html
# http://www.erlang.org/doc/man/eprof.html
# http://www.erlang.org/doc/apps/tools/fprof_chapter.html
@lemenkov
lemenkov / setup_load_balancer.sql
Created July 28, 2015 13:35
Setup load balancer
USE opensips;
INSERT INTO `load_balancer` VALUES (1,0,'sip:b2bua1.local:5060','b2bua=65535',2,''),(2,0,'sip:b2bua2.local:5060','b2bua=65535',2,''),(3,0,'sip:b2bua3.local:5060','b2bua=65535',2,'');