среда, 1 мая 2019 г.

Inplace column type alteration in Postgres: jsonb <-> hstore

In one of my projects I had to migrate localization resources, stored in jsonb to a plain hstore to reduce storage space and complexity.

Here comes an example of the direct and reverse DDL operations:


ALTER TABLE resources
    ALTER COLUMN name TYPE hstore
    USING hstore('ru', (name->'translate'->>'ru'))||hstore('en', (name->'translate'->>'en'));



ALTER TABLE resources
    ALTER COLUMN name TYPE jsonb
    USING json_build_object('translate', json_build_object('ru', name->'ru', 'en', name->'en'));

суббота, 23 февраля 2019 г.

Скидки для путешественников (booking)

Booking.com

Для путешественников:
Кешбек 4% от стоимости бронирования на booking.com вернется вам обратно.

Для путешественников:
Забронируйте, перейдя по ссылке, проживание и получите вознаграждение 1000 р.


Для владельцев:
Зарегистрируйте свои апартаменты, отель типа «постель и завтрак» и любое другое жилье по ссылке и получите 5 бронирований без комиссии.



Скидки на занятия английским и не только / English classes discounts / Free Minutes

English Ninjas

Sign up with referral code and earn 10 free minutes.
Buy a package and earn additional 50 free minutes.
Link: https://englishninjas.com/signup?referral_code=nxDCFWGT



Italki

Дарим по 10$ после первого платного занятия.
Italki -- cоцсеть для изучения иностранных языков. Бесплатная практика иностранного языка по обмену, платные занятия с преподавателями. Цены демократичные -- от 5$ за часовое занятие. Регистрируйтесь по ссылке,  и после занятия получите 10$ на счет. Занятия с иностранными преподавателями, носителями языка.

Ссылка для регистрации: https://www.italki.com/i/EAA6bB?hl=ru


Расписание занятий составляете сами. Можно выбирать любые даты и время для занятий.

Skyeng

Дарим 2 урока после первой оплаты занятий английским.
Клиентам банка тинькофф скидка 20% на первый заказ (см. спецпредложения в приложении банка). Вводное занятие бесплатно. 

Ссылка для регистрации: https://skyeng.ru/invite/4d7a597a4d6a677a4d773d3d









воскресенье, 15 июля 2018 г.

Безопасность

Б — #безопасность.

Браузерные #расширения могут перехватывать конфиденциальную информацию и выполнять нежелаемые действия от вашего имени как то: ставить #дизлайки на ютубе, снимать #лайки и пр.. Поэтому надо удалить все расширения, в надежности которых вы не уверены и почистить систему.

Особенно если у вас ОС Windows, то могут самоустановиться непрошенные расширения. Запустите MalwareBytes AdwCleaner и просканируйте систему. ЕМНИП MailRU'шные экстеншены он классифицирует как AdWare или что-то подобное. Антивирусы не все детектят такие нехорошие расширения.

Так же не помешает защититься от подделки DNS. Я недавно заметил, что некоторые провайдеры типа Ростелеком перехватывают DNS трафик и резолвят имена на левые посторонние адреса.
Для пользователей Windows: в некоторых антивирусах (напр. Avast, Comodo) есть встроенная функция Secure DNS.
Для пользователей Linux: см. #DNS-over-TLS, который Google использует в Andoid, или #DNSCrypt.

понедельник, 15 января 2018 г.

How to execute Linux binary on system with old glibc

If you compiled binary on your development system wich has newer OS with newer libc than on your target system, you can do old know trick with elf loader:

1. Copy ld-linux-x86-64.so.2 and whole /lib/x86_64-linux-gnu/ to home  on target system
2. Launch executable like this:

ld-linux-x86-64.so.2 --library-path ~/x86_64-linux-gnu ~/my_program args

вторник, 10 октября 2017 г.

DevOps' tips & tricks for GNU/Linux developers

DevOps' tips & tricks for GNU/Linux developers
  1. Q: Ansi terminal for Windows
    A:
    1. download and install wsltty
    2. launch your program under mintty: mintty.exe program.exe

  2. Q: globally replace include path details in whole Golang project using sed
    A: 
    find . -name '*.go' -type f -execdir sed -i \
    "s#github.com/fiorix/go-smpp#github.com/Zensey/go-smpp#" \
    '{}' \;
    

    Changes from / to (example):
    include "github.com/fiorix/go-smpp"
    include "github.com/Zensey/go-smpp"

  3. Q: simulate client disconnect on GNU/Linux server
    A:
    # iptables -A INPUT -s 11.22.33.44 -j DROP; iptables -D INPUT -s 11.22.33.44 -j DROP
    where 11.22.33.44 is client's IP

  4. Q: How to set udev rule to grant access for usb termo-printer (for example Godex) ?
    A:
    Create and edit file /etc/udev/rules.d/99-printers.rules
    Set ATTRS{idVendor} and ATTRS{idProductto proper vendor/product id of your printer:
    ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="195f", ATTRS{idProduct}=="0001", ENV{ID_USB_INTERFACES}=="*:0701??:*", MODE="0666"
    

  5. Q: Git. merge changes from given tag
    A:
    git fetch --tags origin
    git merge tag_name


  6. Q: Git. Push a tag to origin
    A:
    After creating a tag in local branch do git push origin <tag_name> for  ex. git push origin v1.3.4
  7. Q: Git. merge changes from given tag
    A:
    git describe --tags --always

  8. Q: Esptool. Dump ESP's ROM (for 1 megabyte)
    A:
    ./esptool.py --port /dev/ttyUSB0 read_flash 0x00000 0x100000 ./dump_1.bin

  9. Q: Esptool. Erase ESP's ROM
    A:
    ./esptool.py --port /dev/ttyUSB0 erase_flash

  10. Q: Redmine. Get info about ticket using REST API
    A:
    wget https://Server/issues/12345.json?include=journals

  11. Q: Batch conversion mp4 -> mp3
    A:
    find -name "*.mp4" -type f -execdir ffmpeg -i '{}' -f mp3 '{}'.mp3 \;

  12. Q: How to share a folder using HTTP, for ex. to transfer files from PC to mobile ?
    A:

    Download webserver.go from https://gist.github.com/alexisrobert/982674
    Run:
    go run webserver.go

  13. Q: How to capture audio of conversation in Skype / Voip or any other program
    A:
    Use audio-recorder. To install it on Ubuntu use repository ppa:audio-recorder/ppa.

  14. Q: Test local syslog logging
    A:
    logger -t topic -p local0.debug TestMsg

  15. Q: Git. Spawning a branch from an empty state, before any commit has been made
    A:
    git checkout --orphan my_namespace/new_project/master

пятница, 8 сентября 2017 г.

go-archetype-project

go-archetype-project

Golang archetype project with following features:
  • Makefile
  • statical code analyzers & checkers,
  • local GOPATH (dependecies got & stored locally)
  • stringer generator use case (log level)
  • logger helper with levels of logging, string formatting
Makefile rules
  • make get-deps
  • make go.archetype
  • make lint


Links