Как стать автором
Обновить
-2
0
Victor Headway @me-zundig

Польз

Отправить сообщение

Go: передача значений VS передача указателей

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров9.1K

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

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

Читать далее
Всего голосов 14: ↑12 и ↓2+10
Комментарии20

OpenConnect: недетектируемый VPN, который вам понравится

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров221K

Я уже написал здесь много статей на тему прокси-протоколов и прокси-клиентов, которые очень сложно детектировать и заблокировать, и которые используют пользователи в Китае, Иране, Ираке, Туркменистане, и теперь вот в России (мы здесь в отличной компании, правда?). Но довольно часто мне в комментариях писали, мол, это все отлично, но мне нужен именно VPN для целей именно VPN - доступа в частные локальные сети, либо для соединения клиентов между собой, и желательно так, чтобы его не заблокировали обезьяны с гранатой. Поэтому сегодня мы поговорим именно о VPN.

Классические OpenVPN, Wireguard и IPSec отметаем сразу - их уже давно умеют блокировать и блокировали не раз. Модифицированный Wireguard от проекта Amnezia под названием AmneziaWG — отличная задумка, но есть одно но...

Читать далее
Всего голосов 325: ↑324 и ↓1+323
Комментарии342

Практичный Go: советы по написанию поддерживаемых программ в реальном мире

Время на прочтение48 мин
Количество просмотров54K
Статья посвящена лучшим практикам написания кода Go. Она составлен в стиле презентации, но без обычных слайдов. Постараемся кратко и чётко пройтись по каждому пункту.

Для начала следует договориться, что значит лучшие практики для языка программирования. Здесь можно вспомнить слова Расса Кокса, технического руководителя Go:

Программная инженерия — то, что происходит с программированием, если добавить фактор времени и других программистов.

Таким образом, Расс различает понятия программирования и программной инженерии. В первом случае вы пишете программу для себя, во втором создаёте продукт, над которым со временем будут работать и другие программисты. Инженеры приходят и уходят. Команды растут или сокращаются. Добавляются новые функции и исправляются ошибки. Такова природа разработки программного обеспечения.
Читать дальше →
Всего голосов 59: ↑57 и ↓2+55
Комментарии14

Устраняем баг в игре 2000 года на Shockwave

Время на прочтение7 мин
Количество просмотров11K
image

История замены единственного байта


Cartoon Cartoon Summer Resort


Это было лето 2000 года. Мне исполнилось шесть, я только что закончил первый класс, и начались каникулы. Это означало, что я мог долго играть на улице, смотреть мультфильмы и включать компьютер отца с Windows 98, чтобы искать игры в совершенно новом, неизведанном краю под названием «Интернет». Одним из моих любимых был веб-сайт Cartoon Network. На нём я нашёл множество увлекательных flash-игр на основе телевизионных мультфильмов. Тем летом они выпустили серию игр под названием «Cartoon Cartoon Summer Resort».


Геймплей первого эпизода Cartoon Cartoon Summer Resort

Эта игра была двухмерной RPG/адвенчурой с видом сверху сбоку, состоявшей из четырёх эпизодов. Игрок управлял мультяшным персонажем, находящимся в отпуске на курорте с другими персонажами мультфильмов. В каждом эпизоде на курорте появлялась проблема, которую нужно было решить. Игрок должен был решить её, взаимодействуя с персонажами и находя предметы или обмениваясь ими.
Всего голосов 49: ↑49 и ↓0+49
Комментарии16

Новый виток импортозамещения. Куда бежать и что делать?

Время на прочтение10 мин
Количество просмотров53K

Что такое импортозамещение в ИТ


Совсем кратко пробегусь по основным вопросам для синхронизации.

1. Что такое отечественное ПО и оборудование?

С юридической точки зрения российскими считаются те продукты, чьё российское происхождение подтвердили в Министерстве цифрового развития и в Минпромторге соответственно включением в свои реестры.

С конца 2017 г. согласно постановлению Правительства РФ №1594 ПО стран ЕврАзЭс не подпадает под определение «иностранного», но пока реестра евразийского программного обеспечения нет, то и использовать, например, белорусское ПО в качестве импортозамещающего нельзя.

Сразу оговорюсь, что пост больше — про ПО.

2. А оно реально произведено в РФ с нуля?

В некоторых случаях — да. Например, решения от Kaspersky или Abbyy.

В других за основу взято свободное программное обеспечение (СПО), и к нему применены собственные разработки. Сюда можно отнести, например, большинство российских ОС, МойОфис Почта и Яндекс.Браузер. Это не обязательно плохо. По этому пути изначально шли, например, Nutanix и Zimbra. Главное — быть уверенными, что производитель не организовал «сборку» под единственный проект и планирует поддерживать решение в будущем.

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

3. А если этого ПО недостаточно?

В реестре отечественного ПО присутствуют операционные системы (ОС) на базе ядра Linux. У каждой из этих ОС есть свой репозиторий. Поскольку формально приложения входят в состав ОС, так же как и службы Windows, то они считаются российскими, и за их поддержку отвечает производитель ОС.

4. Есть ли альтернативы?

Есть СПО, о котором я уже говорил. Но имеются нюансы.
Читать дальше →
Всего голосов 58: ↑51 и ↓7+44
Комментарии146

Как настроить деплой web-приложения на Go для Gitlab на VDS

Время на прочтение3 мин
Количество просмотров26K

Предисловие


Эта статья является результатом недельного поиска весьма разрозненной информации о том, как же настроить деплой web-сервиса на Go. Не на Heroku, не на Docker, не на Digital Ocean, а просто на старомодный VDS с CentOS 7x64. Почему-то в сети нет этой информации, а большинство туториалов начинаются с того, как настроить билд, и заканчиваются запуском тестов.

Сразу предупрежу, что впервые настраивал CI/CD процесс, так что это статья от новичка новичку.
Читать дальше →
Всего голосов 12: ↑10 и ↓2+8
Комментарии22

Нейронные сети с нуля. Обзор курсов и статей на русском языке, бесплатно и без регистрации

Время на прочтение5 мин
Количество просмотров217K
На Хабре периодически появляются обзоры курсов по машинному обучению. Но такие статьи чаще добавляют в закладки, чем проходят сами курсы. Причины для этого разные: курсы на английском языке, требуют уверенного знания матана или специфичных фреймворков (либо наоборот не описаны начальные знания, необходимые для прохождения курса), находятся на других сайтах и требуют регистрации, имеют расписание, домашнюю работу и тяжело сочетаются с трудовыми буднями. Всё это мешает уже сейчас с нуля начать погружаться в мир машинного обучения со своей собственной скоростью, ровно до того уровня, который интересен и пропускать при этом неинтересные разделы.

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

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


Читать дальше →
Всего голосов 39: ↑34 и ↓5+29
Комментарии12

Интересные способы использования Go каналов (перевод)

Время на прочтение9 мин
Количество просмотров35K
Предлагаю вам перевод статьи Gary Willoughby «Interesting ways of using Go channels».

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

gopher

Интересные способы использования Go каналов


Я написал этот пост, чтобы задокументировать доклад про Go каналы Джона Грэм-Камминга на конференции GopherCon 2014. Доклад назывался «Краткое руководство по каналам» и он доступен для просмотра на youtube.com.

На протяжении доклада нам представляют интересные способы использования Go каналов и раскрывают возможности и преимущества конкурентного программирования. Лично мне этот доклад открыл глаза на несколько новых способов структурирования программ и новых техник для синхронизации по нескольким ядрам процессора.

Следующие примеры демонстрируют различные техники, как использовать каналы в Go. Код был специально упрощен для их понимания. Не стоит его использовать для продакшн версий. Например, пропущены все обработки ошибок.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии29

GUI на Golang: GTK+ 3

Время на прочтение7 мин
Количество просмотров84K

Решил я написать одно кроссплатформенное десктопное приложение на Go. Сделал CLI-версию, всё работает отлично. Да ещё и кросскомпиляция в Go поддерживается. Всё в общем отлично. Но понадобилась также и GUI-версия. И тут началось...


Golang gotk3

Читать дальше →
Всего голосов 52: ↑50 и ↓2+48
Комментарии58

Моя история создания мотивационного приложения (iOS и Android) для дочери с дочерью на Unity и C#

Время на прочтение13 мин
Количество просмотров28K

История создания приложения, позволяющего детям зарабатывать деньги своим умом


Это первая часть истории (вперемешку с рассказом о моих ошибках и их решениях) о том, как я (где-то два года в свободное время) разрабатывал мобильное приложение под iOS и Android, которое бы мотивировало мою дочь решать примеры по математике, чтобы она достигла автоматизма в основах арифметики (склад числа 10 или табличка умножения). В итоге, получилось приложение, позволяющее ребёнку зарабатывать деньги своим умом.


Использовал я движок Unity и язык C#, а также дополнительный набор софта вроде обязательного Photohsop или Audacity (для создания звуков).


План рассказа (часть первая)


  • Предыстория
  • О монетизации
  • Почему Unity
  • О Scriptable Objects
  • О плагине Anima2D
  • О Lean Localization
  • Об iTween
  • О Unity Analitics
  • О Visual Studio
  • Ссылки

Предыстория и колорадские жуки


Мой предыдущий опыт — это несколько лет в 3D и, с недавних пор, разработка нескольких инди-игр на пару с программистом, где я выступал в основном только в роли дизайнера и художника (очень редко пописывая какие-то элементарные скрипты на C#). Хотя, с программированием знаком не понаслышке (колупал Basic в школе и баловался с C/C++ в универе).


Вся эта эпопея началось с проблемы. Я увидел, что при решении школьных задач, дочь «буксует» и ошибается не на чём-то сложном, а на основах. Я решил, что будет прикольно, если я напишу ей забавное приложение, где она в игровой форме будет решать примеры (набираясь таким образом опыта и достигая автоматизма). И, чтобы мотивировать её ещё больше, я сделал так, что за правильное решение примеров она получала деньги (количество денег подсчитывало приложение на основе количества правильных ответов, а я потом выводил нужную сумму, выплачивая дочери наличные).

Всего голосов 34: ↑31 и ↓3+28
Комментарии17

Вариатор для «Москвича»

Время на прочтение11 мин
Количество просмотров84K
Акселерация: старушка утверждает, что у «Москвича» некачественная коробка передач
© М. Жванецкий


«Сорок первый»


В 1985 году в СССР появился новый автомобиль «Москвич-2141».

Планировалось, что этот автомобиль третьей группы малого класса займет потребительскую нишу между массовой «восьмеркой» ВАЗ-2108 второй группы малого класса и престижной «Волгой» ГАЗ-24-10 среднего класса.

Довольно большой, скоростной, комфортабельный (по советским меркам) автомобиль с некоторыми элементами шика (УКВ радиоприемник в штатной комплектации!), мечта советского человека.

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

И если проблему с двигателем предполагалось со временем решить переходом с УЗАМ-331.10 и ВАЗ-2106 на новое семейство двигателей АЗЛК-21414, под которые началось строительство нового завода, то с автоматической коробкой передач все обстояло более печально. Строго говоря, автоматической коробкой не мог похвастаться ни один массовый советский автомобиль, включая предел мечтаний советской номенклатуры 24-ю «Волгу».

Однако некоторые задумки все-таки были, и тем, кто интересуется историей советской автомобильной техники добро пожаловать под кат


Читать дальше →
Всего голосов 191: ↑189 и ↓2+187
Комментарии295

Популярные антипаттерны: паджинация

Время на прочтение4 мин
Количество просмотров17K

Здравствуйте, меня зовут Дмитрий Карловский и я… не люблю читать книги, потому что пока перелистываешь страницу, ты вырываешься из увлекательного повествования. И стоит чуть замешкаться, как ты забываешь на чём оборвалось последнее предложение предыдущей страницы, и приходится листать обратно, чтобы перечитать его. И если с физическими книгами это не так страшно, то вот с выдачей rest-сервера всё куда печальней — ведь сейчас на странице одни данные, а через секунду — уже совершенно другие. Давайте подумаем как же так получилось, кто виноват и главное — что делать.


Разные паджинаторы

Читать дальше →
Всего голосов 50: ↑12 и ↓38-26
Комментарии112

Вольный опус про найм, собеседования и трэш на рынке IT-кадров

Время на прочтение11 мин
Количество просмотров95K

Нынче программист может не найти работу в двух случаях: он либо клинический дятел и неадекват, либо хочет в качестве оклада звездолёт. Во всех остальных случаях "в девках" он долго не задерживается. Однако вопрос "кто кого на***л?" интересует обе стороны "противостояния". Так же всем хочется знать цену вопроса и как бы расширить целевую аудиторию, побыстрее найти наилучшее предложение и отвадить всяких отмороженных. Ну и, конечно же, есть чисто-программерское "чтобы внутренний перфекционист был спокоен". Обо всём этом по чуть-чуть и поразмышляю в текстовой форме.

Клац
Всего голосов 179: ↑168 и ↓11+157
Комментарии304

Распространение программ на Go. Часть 1

Время на прочтение4 мин
Количество просмотров11K
Недавно прочел достаточно неплохую статью о инсталяции программ на Go. Где был показан простой пример того как можно реализовать установку бинарника под «любую» (unix friendly) операционную систему. Решил написать более подробный цикл статей на эту тему.

image

Читать дальше →
Всего голосов 18: ↑14 и ↓4+10
Комментарии3

Пряморукий DNS: делаем правильно

Время на прочтение16 мин
Количество просмотров147K
Представляем вашему вниманию очень эмоциональный рассказ Льва Николаева (@maniaque) о том, как надо настраивать DNS и особенно, как делать не надо. Вот прямо после каждого пункта можете мысленно добавлять: «Пожалуйста, не делайте этого!» В своем докладе Лев так и говорит.

Статья будет состоять из трех частей:

1. Как сделать резольвер (unbound, bind)

Резольвер — это та штука, которую вы прописываете в настройках своей операционной системы, чтобы можно было превращать понятные человеку адреса типа ya.ru в непонятное 87.250.250.242.

2. Как держать зоны (PowerDNS)

Если вы уже доросли до этого, расскажем, как держать зону самостоятельно, как это делать хорошо и отказоустойчиво, и как это делать, если у вас несколько сотен доменов.

3. Как взболтать, но не смешивать (PowerDNS + unbound)


Всего голосов 45: ↑43 и ↓2+41
Комментарии38

Механизмы контейнеризации: cgroups

Время на прочтение11 мин
Количество просмотров104K
механизмы контейнеризации

Продолжаем цикл статей о механизмах контейнеризации. В прошлый раз мы говорили об изоляции процессов с помощью механизма «пространств имён» (namespaces). Но для контейнеризации одной лишь изоляции ресурсов недостаточно. Если мы запускаем какое-либо приложение в изолированном окружении, мы должны быть уверены в том, что этому приложению выделено достаточно ресурсов и что оно не будет потреблять лишние ресурсы, нарушая тем самым работу остальной системы. Для решения этой задачи в ядре Linux имеется специальный механизм — cgroups (сокращение от control groups, контрольные группы). О нём мы расскажем в сегодняшней статье.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии4

Git: много хуков полезных и разных

Время на прочтение4 мин
Количество просмотров20K
Статья является вольным переводом вот этого материала. Любителям длинных и заумных первоисточников можно сразу читать оригинал.

Когда перед нами ставится задача при изменении кодбейса, например, в Github-репозитории выполнить пересборку/перезапуск какого-нибудь приложения на каком-то нашем окружении, то первое, что приходит на ум в качестве возможного триггера такой пересборки, это предоставляемый тем же гитхабом механизм веб-хуков: при наступлении какого-либо события с нашим удаленным репозиторием (т.к. появление нового коммита в какой-нибудь его отслеживаемой ветке) гитхаб задействует соответствующий веб-хук и «дернет» указанный в его настройках сервис, который и запустит процесс пересборки/перезапуска нашего приложения. Это стандартный широкоиспользуемый и простой механизм для таких случаев, все так делают, и все такое…

Но что, если наше приложение живет на хосте, доступ к которому по каким-то причинам гитхабу не положен? Например, хост находится в закрытой сети или за NAT'ом и недоступен из интернета?
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии4

Как я возвращал украденный домен популярного сайта

Время на прочтение13 мин
Количество просмотров47K
В 2008 году создал сайт, который, спустя время, превратился в водно-моторное сообщество, объединяющее тысячи любителей моторных лодок и катеров. В сезон, посещаемость ресурса превышала 10 000 человек в сутки и кто-то решил, что сайт ему нужнее.

Получив доступ в админ-панель моего регистратора (r01.ru), вор перенес домен к другому (internet.bs) на свой аккаунт. База данных и файлы обманным путем были получены у хостера.

Я потерял проект, над которым работал около 9 лет. Вернуть домен получилось лишь через 8 месяцев.
Читать дальше →
Всего голосов 149: ↑149 и ↓0+149
Комментарии117

Просто о графах. Попытка популяризации

Время на прочтение19 мин
Количество просмотров41K
«Всякие звания (дворянина, купца, мещанина, крестьянина и пр., титулы — княжеские, графские и пр.) и наименование гражданских чинов (тайные, статские и проч. советники) уничтожаются...»
Об уничтожении сословий и гражданских чинов
Декрет ВЦИК и СОВНАРКОМа от 10.11.1917 года, ст. 2



image


Как-то же я обходился без этого раньше...


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

Вероятно, специфика “случайно распределенных графов” окажется маловостребованной в нашей с вами повседневности, но некоторое представление о теории графов может оказаться полезным в самых разнообразных ситуациях даже человеку не особенно к математике расположенному, – что же касается людей, занятых в такой области, как программирование, то изощренная изобретательность, как правило, сопутствует ежедневно выпадающим на их долю задачам, оттого представители этой профессии, в поисках новых идей и инструментов, случается, азартно загружают свой ум вещами, казалось бы не пригодными для полезного использования, однако, заказав пиццу за 10 тысяч биткоинов, они дарят хорошее настроение другим хорошим людям на многие годы, и таки оправдывают свою пассионарность.
Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии16

Хороший дизайнер копирует чужие логотипы, великий — крадёт

Время на прочтение2 мин
Количество просмотров49K
Я «копировал сочинения», чуток подправлял и сдавал учительнице по русскому.
Я копировал чужие программы, подправлял код, экспериментировал, развивал и делал свои программы.
Я копировал чужую подпись.
Я даже копировал чужие тексты и картинки. Дорабатывал и иногда получались отличные результаты.
Или я все украл?



В своей статье Ferdinand Vogler поднимает вопрос, чем копирование отличается от кражи и так ли все ужасно с копированием.

Не факт, что «плагиатчики» сознательно повторяют то, что видели до этого. Но иногда попадаются уж больно похожие вещи.

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

Фердинанд предлагает свое видение того, как различать копирование и кражу:
«Украсть» — это значит повторить точь в точь. Компании хотят получить профит от того, что привносит дизайн. Кража — это вышить лого Nike на свитере, чтобы продать их в два раза дороже.

Дизайн — это подход, что каждый экземпляр сделан в строгом соответствии со стандартом, что затрудняет копирование. Кража часто связана с расхождением между переданным сообщением и контентом. Самоидентификация и публичный имидж не конгруэнтны. Вот почему трудно подделать бренды премиум-класса. Кража — это коварная попытка не быть обнаруженной."

Когда копирование превращается в кражу? Можно ли скопировать на 100%, указать авторство и публиковать? Можно ли самому создать, но указать чужое авторство?
Читать дальше →
Всего голосов 37: ↑32 и ↓5+27
Комментарии57

Информация

В рейтинге
Не участвует
Откуда
Хабаровск, Хабаровский край, Россия
Дата рождения
Зарегистрирован
Активность