Pull to refresh
1
0
Polincev Sergey @thechemis

Software Engineer

Send message

SQLite-песочница в браузере

Reading time4 min
Views27K

Чего мне всегда не хватало, так это аналога JSFiddle для SQLite. Онлайн-песочницы, в которой можно быстро проверить SQL-запрос и поделиться с другими.

Вот чего хотелось:

— Возможность загрузить готовую базу, а не писать SQL для создания таблиц.
— Подключать как локальные базы, так и удаленные (по url).
— Сохранять базу и запросы в облаке.
— Бесплатно и без регистрации.
— Свежайшая версия SQLite.
— Минимализм.

В итоге сделал сам
Total votes 70: ↑70 and ↓0+70
Comments9

Как я получил 4 оффера в FAANG в Европе или из Воронежа в Лондон

Reading time16 min
Views44K


Очередная история успеха после череды неудач. Расскажу, чего мне стоило получить офферы от Facebook*, Google, Amazon, JP Morgan в Европе, как я готовился, сколько собесов зафейлил перед тем, как удача повернулась ко мне правильной стороной.


TL;DR. Послал сотни резюме. Прорешал около 100 задач на Leetcode. Прочел книжку по архитектуре (не той, которая про дома, а той, которая system design). Прошел 9 интервью. Получил 4 оффера. Принял 1. Жил, пока что, не очень долго, но, вполне себе, счастливо в Лондоне.
Читать дальше →
Total votes 53: ↑43 and ↓10+49
Comments65

Go: стоит ли использовать указатели вместо копий структуры?

Reading time4 min
Views10K

Систематическое использование указателей для передачи структур вместо их копирования для многих разработчиков Go кажется лучшим вариантом с точки зрения производительности.

Чтобы понять влияние использования указателя, как альтернативы передачи копии структуры, мы рассмотрим два юзкейса.

Читать далее
Total votes 12: ↑6 and ↓6+1
Comments10

Прагматичные Unit тесты на Golang

Reading time6 min
Views28K

Обычный пятничный вечер. Ты уже расслабился, попивая кружечку чая или чего покрепче... Но тут, как назло, бомбит личку в телеге твой надоедливый коллега DevOps со скринами ошибок твоего кривого коммита на серваке. Спустя четно потраченные нервы и логирование всего и вся, все же удалось найти ту самую строчку кода, что так мешала всем жить. Не хотелось бы попадать часто в такие ситуации, да и обременять последующее поколение на те же муки.

В этой статье мы рассмотрим различные методики написания одного и того же теста, их плюсы и минусы, а также попробуем определить: какого плана стоит придерживаться в будущем.

Читать далее
Total votes 12: ↑9 and ↓3+12
Comments5

Эффективный фингерпринтинг через кэш фавиконов в браузере

Reading time3 min
Views16K

Демо

Фавикон сайта — маленький значок .ico размером 16*16 или 32*32 пикселей на вкладке браузера. Помогает ориентироваться в сотнях вкладок. У твиттера синяя птичка, у Gmail красный символ почты, у Википедии жирное W.

Но оказывается, что эти значки представляют собой уязвимость, через которую можно выполнять фингерпринтинг — идентифицировать юзера даже через VPN и режим инкогнито в браузере (см. демо).
Читать дальше →
Total votes 34: ↑30 and ↓4+42
Comments45

Популярные задачи для собеседований бэкенд-разработчиков на Go и их решения

Reading time7 min
Views52K

Я живу в Ташкенте, и когда учился в университете — начал учить Python, чтобы писать ботов. Боты — это узбекский хлеб, у нас на них построено вообще все. Например, никто не делает приложения для заказа еды, все только в мессенджерах. 

Я учил язык по статьям из интернета — просто брал каркас и дальше дописывал, смотрел где что падает, постоянно решал задачи на leetcode. Писал я тогда ужасно, но что было, то было. Мне нравилось, но чем больше я углублялся, тем сильнее раздражали скорость выполнения, ограничения параллелизма и динамическая типизация.

Тогда я решил попробовать Go.

Читать далее
Total votes 36: ↑29 and ↓7+31
Comments17

Оптимизация микросервиса на Go на живом примере

Reading time17 min
Views20K

Всем привет. Меня зовут Нещадин Иван, и я расскажу про оптимизацию одного из микросервисов Авито на Go. История построена вокруг различных инструментов, которые доступны в языке, и пойдёт от простых примеров к более сложным.


Читать дальше →
Total votes 36: ↑32 and ↓4+33
Comments41

Оптимизация размера Go-бинарника

Reading time6 min
Views11K

image Если вы когда-нибудь писали на Go, то размер получающихся бинарников не мог пройти мимо вашего внимания. Конечно, в век гигабитных линков и терабайтных дисков это не должно быть большой проблемой. Но все-таки встречаются ситуации, когда хочется, чтобы размер бинарника был как можно меньше, и при этом вы не хотите расставаться с Go. О вариантах, как сделать так, чтобы Go-бинарник “похудел”, пойдет речь ниже.

Читать дальше →
Total votes 32: ↑30 and ↓2+35
Comments21

Создание минимального Docker-контейнера для Go-приложений

Reading time4 min
Views47K
Привет, Хабр! Предлагаю вашему вниманию перевод статьи основателя сервиса Meetspaceapp Nick Gauthier «Building Minimal Docker Containers for Go Applications».

Время чтения: 6 минут

Существует множество, как официальных, так и поддерживаемых сообществом контейнеров для различных языков программирования (включая Go). Но эти контейнеры могут быть довольно большими. Давайте сперва сравним стандартные методы создания контейнеров для Go-приложений, а затем я покажу способ создания крайне маленьких статических контейнерезированных Go-приложений

Часть 1: Наше «приложение»


Для тестирования нам потребуется какое-нибудь маленькое приложение. Давайте будем фетчить google.com и выводить размер HTML.

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "os"
)

func main() {
    resp, err := http.Get("https://google.com")
    check(err)
    body, err := ioutil.ReadAll(resp.Body)
    check(err)
    fmt.Println(len(body))
}

func check(err error) {
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
}

Если мы запустимся, то получим только какое-то число. У меня вышло около 17К. Я целенаправленно решил использовать SSL, но причину объясню позднее.
Читать дальше →
Total votes 23: ↑20 and ↓3+17
Comments10

Дорасти до сеньора и даже выше: советы по развитию IT-специалиста

Reading time10 min
Views20K

В наш бурный век информационных технологий можно не успеть за ходом истории. Сегодня мы начинаем карьеру в IT с ясным представлением о том, что станем, например, сеньором. Но отвлекшись на некоторые аспекты профессии или глубоко погрузившись в текучку, можно внезапно обнаружить себя миддлом на пенсии. Что в нашем развитии может пойти не так?

О том, что нужно для профессионального развития на разных этапах карьерной лестницы IT специалиста, в своем докладе на конференции DevOps Live 2020 об этом рассказал Карен Товмасян.

Читать далее
Total votes 15: ↑11 and ↓4+13
Comments4

Зачем нужен static при объявлении анонимных функций?

Reading time2 min
Views20K

Буквально на днях пришел вопрос от одного из подписчиков касательно одного из постов моего telegram канала. Его смутил вот такой кусок кода:

usort($firstArray, static function($first, $second) { return $first <=> $second;
});

Вопрос звучал так:

"Зачем делать callback’и в функции сортировки (usort), статическими?"

И я подумал, что это действительно хороший вопрос, на который стоит обратить внимание.

Читать далее
Total votes 52: ↑50 and ↓2+63
Comments14

Гексагональная архитектура

Reading time31 min
Views168K
На недавнем Laracon NYC я читал доклад о гексагональной архитектуре. Несмотря на то, что я получил позитивную реакцию слушателей, мне кажется, что остались люди, которые хотели бы получить чуть более полное представление о том, что это такое. Разумеется, с примерами. Это моя попытка расширить тот доклад.

  1. Видео с доклада
  2. Слайды


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



Являясь одним из вариантов слоеной архитектуры, гексагональная подразумевает разделение приложения на отдельные концептуальные слои, имеющие разную зону ответственности, а также регламентирует то, каким образом они связаны друг с другом. Разбираясь с этим типом архитектуры, мы также можем понять как, зачем, и почему при проектировании приложения используются интерфейсы.



Гексагональная архитектура, ни в коем случае не новый подход к разработке с применением фреймворков. Напротив, это всего лишь обобщение «лучших практик» — практик новых и старых. Я обернул эти слова в кавычки, чтобы люди не воспринимали их совсем буквально. Лучшие практики, которые работают для меня, могут не работать для вас — все зависит от задачи и преследуемых целей.



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


Читать дальше →
Total votes 20: ↑16 and ↓4+12
Comments16

Микросервисы на Go с помощью Go kit: Введение

Reading time12 min
Views56K

В этой статье я опишу использование Go kit, набора инструментов и библиотек для создания микросервисов на Go. Эта статья — введение в Go kit. Первая часть в моем блоге, исходный код примеров доступен здесь.

Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments7

Go: как программа восстанавливается после паники?

Reading time3 min
Views6.7K

Паники (Panic) в Go запускаются, когда программа не может должным образом обработать ошибку, например, происходит недопустимый доступ к памяти. Они также могут быть инициированы разработчиком, если ошибка является неожиданной и нет другого способа справиться с ней. Понимание процесса восстановления или прекращения работы в такой ситуации может быть весьма полезно для понимания последствий запаниковавшей программы.

Читать далее
Total votes 6: ↑4 and ↓2+2
Comments0

WebRTC в Docker. Борьба за ресурсы

Reading time8 min
Views4.1K

Несколько недель назад мы выкатили статью про Докер и WebRTC сервер и рассказали в ней о нюансах запуска. Читатели справедливо усомнились в пригодности докера для продакшена по следующим причинам:

Читать далее
Total votes 6: ↑5 and ↓1+5
Comments1

Golang-дайджест № 6 (1 – 30 июня  2021)

Reading time4 min
Views5.8K

Свежая подборка новостей и материалов

Интересное в этом выпуске

Выпущены версии Go 1.16.5 и 1.15.13, выпущен gopls v0.7.0, создание собственного Ngrok в 130 строках, GopherCon Europe 2021 Online

Приятного чтения!

Читать далее
Total votes 14: ↑13 and ↓1+14
Comments0

Аарон Шварц: как стать продуктивнее

Reading time10 min
Views11K
image

Прим. ред: Я сейчас делаю Ontol — это Github для знаний/мудрости. Онтол — это курируемые списки материалов (тексты и видео), которые существенно повлияли на мировоззрение и доступные бесплатно и в 1 клик. Этот текст попадает в онтол «продуктивность». (канал в телеграм: t.me/ontol)

Об Авторе: Аарон Шварц — американский интернет-активист, программист, писатель, хактивист. Умер за свободу информации.

  • В 12 лет создал сайт Info, где каждый мог писать о том, что знает (а другие могли дополнять и комментировать). Это был предвестник Википедии.
  • В 14 лет Шварц стал соавтором спецификации RSS 1.0.
  • Аарон Шварц работал под руководством Тима Бернерса-Ли в составе основной рабочей группы RDF в Консорциуме W3C.
  • Попал на первую программу в Y Combinator со стартапом Infogami, который впоследствии слился с популярным сайтом Reddit.
  • Работал над Open Library и Creative Commons
  • Внес существенный вклад в Markdown.

«За это время, что ты смотришь телевизор», говорят мне, «ты бы уже новый рассказ написал». С этим трудно не согласиться — написание рассказа, ясное дело, лучшее применение свободному времени, чем просмотр телепередачи, — но тут не всё так просто, ведь под этим подразумевается, что смотреть телевизор и писать рассказ — равноценные вещи, что, к сожалению, не всегда так.

Время имеет разные степени качества. Если я еду в метро и обнаруживаю, что забыл свой ноутбук, то пара абзацев — это всё, что я смогу выжать. Кроме того, трудно сосредоточиться, когда тебя постоянно дёргают. Ну и психологический момент — порой ты окрылён, полон мотивации и готовности работать над чем-то, а порой чувствуешь такое раздражение и усталость, что не можешь делать ничего, кроме как пялиться в телевизор.
Читать дальше →
Total votes 16: ↑13 and ↓3+16
Comments15

Information

Rating
Does not participate
Location
Барнаул, Алтайский край, Россия
Date of birth
Registered
Activity