Search
Write a publication
Pull to refresh
22
0
Андрей Щетинин @andrewsch

User

Send message

Быстрый старт – программируем на Go под Windows — настройка Environment

Reading time3 min
Views117K

Update (22.07.2013)


С момента изначального написания статьи многое изменилось. Я немного обновил пост, чтобы в сети не висела устаревшая инструкция.

Вместо вступления


Если кто не знает, Go (www.golang.org) – компилируемый язык программирования. Как и все хочет быть «лучше чем C». Разработку языка поддерживает Google (создатели языка — Rob Pike, Robert Griesemer и Ken Tompson), но Go — полностью open-source, в разработке принимает участие большое количество людей не из Google. Меня язык заинтересовал своей простотой и необычным подходом к ООП и многопоточности. Захотелось попробовать. Моя рабочая OS — Windows и будучи разбалованным платформой .Net, C# и Visual Studio мне было трудно именно начать. Хотя на самом деле это оказалось совсем просто, и достаточно быстро я настроил себе удобный Environment, состоящий, по сути, из IDE с подобием IntelliSense. О том, как это сделать за 15 минут я и хотел бы рассказать.
Читать дальше →

История развития форматов видеосжатия

Reading time10 min
Views47K
Далёкий 1988й год был полон удивительных событий. В этом году увидел свет 4й альбом группы Metallica «...And justice for all», а СССР запустил в свой первый и единственный полёт многоразовый космический корабль «Буран». В этом же году началась история видеосжатия – появился самый первый стандарт видео-кодека.
Самые известные стандарты видеосжатия появились благодаря двум конторам: VCEG и MPEG. Нельзя назвать их конкурентами: некоторые стандарты были выпущены комитетами поодиночке, некоторые стали плодом их запретной любви коллективной работы в составе объединённых групп. По иронии судьбы именно эти «совместные» форматы и получили наибольшее распространение.

1988 год – H.261


352x288 - предел мечтаний в 1988 годуИтак, 1988 год. H.261 стал первым полноценным форматом видеосжатия, получившим широкое распространение. Это был «классический» стандарт, работающий в цветовом пространстве YCbCr, базирующийся на дискретном косинусном преобразовании блоков и сжатии Хаффмана. Поднимите руку те, кто слышал о нём? А ведь именно в этом стандарте впервые появились такие понятия, как макро-блок, целопиксельный вектор движения и де-блокинг (или пост-процессинг). А еще именно тогда, 23 года назад, появилась концепция опорных кадров. H.261 предусматривал кадры 2х типов: I(ntra) – полностью независмый кадр, и P(redicted) – кадр, зависимый от предыдущего. Максимальное разрешение CIF (пример приведён слева), поддерживаемое H.261, сейчас не впечатлит даже любителей смотреть видео на телефоне. И тем не менее, для своего времени это был очень прогрессивный, весьма «продвинутый» стандарт. Все последующие стандарты видеосжатия базируются на идеях, берущих свое начало в H.261, и де-факто являются результатом его эволюционного развития.

Читать дальше →

Как составить презентацию проекта (pitch book)

Reading time2 min
Views2.8K
Примечание: автор текста — Всеволод Леонов, Академия проектов Farminers

Всем привет. Если вы уже сделали упражнение от Александра Бородича и написали elevator pitch, самое время начать работу над более детальным документом (просто pitch, или pitch book), который вы отправите потенциальному инвестору после того, как он купился на ваш elevator pitch.
Читать дальше →

Один день из жизни проджект менеджера глазами девелопера

Reading time5 min
Views15K
Когда ты начинаешь изучать программирование, ты знаешь, каким должен быть идеальный программист, и ты уверен, что ты таким будешь. Ты видишь ошибки программистов старше и опытнее, и совершенно уверен, что ты никогда их не повторишь.

Когда ты устроился в компанию на позицию Junior Developer, ты смотришь вокруг и видишь, с какой лёгкостью старшие товарищи забивают на шаблоны и пишут два одинаковых класса с разными типами переменных. Как они хардодят размеры вьюшек в коде. Как они читают хабр на работе. И ты точно знаешь, что когда вырастешь до Senior Developer-а, ты будешь лучше, надёжнее, ответственнее, любой блок твоего кода можно будет показывать потомкам.

Ты уже три года проработал программистом, ты (возможно) всё более и более пристально смотришь в сторону проджект менеджмента. Твой ПМ уже не царь, и не бог, и его работа не кажется тебе сложной и непонятной. Ты видишь, что работаешь намного больше его, а он ленится сделать тебе Code Review и похвалить за оригинальную интеграцию сторонней библиотеки. Он даже не смотрит на твой идеальный код в сложнейшей стыковке кривого API и мутной бизнес-логики. И ты точно знаешь, что, когда тебе улыбнётся удача руководить проектом, ты всё будешь делать лучше. Ты будешь бережнее следить за своими девелоперами, ревьювить каждый их класс, хвалить за удачные решения и порицать за очевидные ошибки.
Читать дальше →

Нифига себе сходил за хлебушком, или история одного взлома

Reading time8 min
Views117K
Всё началось с того, что ко мне (как к фрилансеру) обратились за помощью и попросили настроить exim4 так, чтобы почтовая рассылка не попадала в спам. Даже заботливо ссылку прислали на замечательную статью.

Работы на пару часиков включая обновление DNS, но не тут то было. Залогинившись под рутом я включил свой любимый screen по привычке командой screen -x и лицезрел прелюбопытнейшее действо в любимой многими папке /dev/shm. Злоумышленник не удосужился прикрыть сессию screen, либо всё еще работал в ней. И тут начинается квест:

Первое, что я сделал — просмотрел, чем же занимался злоумышленник:

Читать дальше →

Секреты JDK

Reading time4 min
Views26K

Про Unsafe в Java не слышал только ленивый, однако это не единственный магический класс в Sun/Oracle JDK, стирающий границы Java платформы и открывающий тропинки, не нанесенные на карту публичного API. Я расскажу про некоторые из них, принесшие пользу в реальных проектах. Но помните: недокументированные возможности лишают ваше приложение переносимости на другие Java платформы и, кроме того, являются потенциальным источником нетривиальных ошибок. Я даже зря написал слово «приложение». Лучше сказать, что описанные ниже классы вовсе не годятся для приложений! Скорее, они представляют интерес лишь для системного ПО и для любознательных программистов, т.е. для вас :)
Читать дальше →

Типичные случаи утечки памяти в Java

Reading time4 min
Views75K
Большинству разработчиков известно, что сборщик мусора в Java не является универсальным механизмом, позволяющим программисту полностью забыть о правилах использования памяти и о том, в каких случаях осуществляется его работа. Ниже описаны типичные случаи утечки памяти в java-приложениях, встречающиеся повсеместно.
Итак, о чём должен помнить каждый java-программист.
Читать дальше →

Tsung: Нагрузочное тестирование Web-приложений

Reading time3 min
Views43K

Tsung — это распределенная система нагрузочного тестирования, написанная на Erlang'е. Заявлена поддержка HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP and XMPP/Jabber. В этой статье я опишу как протестировать обычный web сайт на нагрузку.
Читать дальше

Несколько полезных сервисов

Reading time2 min
Views126K
Хочу поделиться ссылками на несколько полезных сервисов. Некоторые из них помогут сэкономить время, другие — сделают за Вас незнакомую/нелюбимую работу. Список разбит по категориям, чтобы было легче ориентироваться.

Сервисы опросов
userreport.com (добавил Romanych)
simpoll.ru
webanketa.com (добавил mihass)

Кнопки постинга в социальные сети
Кнопка от Яндекса
addthis.com (добавил UksusoFF)
share42.com
Читать дальше →

Игры, выжавшие из NES максимум (часть 1)

Reading time5 min
Views64K
Вспомишь игры, в которые заигрывался на NES (в народе известной как «Dendy»), и диву даешься, насколько, в сравнении с современностью, проста и даже примитивна была игротека тех времен. Однако, если хорошо покопаться в архивах картриджей, там можно найти на удивление много игр, обладающих отличной графикой и выдающимся звуком, которые никак не ожидаешь встретить на такой слабой консоли.

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

Это первая часть перевода, продолжение здесь, окончание здесь.

Тряхнуть стариной

Семь причин, по которым ваши коллеги вам не доверяют

Reading time2 min
Views7.6K
Замечания от переводчика: текст написан для американской действительности, но, на мой взгляд, приводимые положения универсальны, и справедливы для Российских коллективов.

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

Каких-таких шагов?

Реализация режима энергосбережения DEEP IDLE в ядре Linux

Reading time2 min
Views4.2K
Разработчик, который зарегистрирован на форуме xda-developers.com под ником Ezekeel, попытался разобраться, почему его Nexus S слишком быстро съедает заряд аккумулятора в режиме ожидания. В техническом руководстве устройства указано, что устройство поддерживает режимы работы NORMAL, IDLE, DEEP IDLE, STOP, DEEP-STOP и SLEEP. Но беглое изучение ядра Linux показало, что в операционной системе имеется только поддержка IDLE. В этом режиме отключается лишь процессор, а остальные модули продолжают потреблять энергию. Ezekeel решил исправить этот недостаток.
Читать дальше →

Какие ошибки в письмах делают люди и роботы

Reading time7 min
Views44K
Каждый день мне пишут роботы и обычные люди. В топике я расскажу про глупые ошибки в письмах, которых можно легко избежать. А ещё — о том, как устроена обработка почты у нас в компании.

Читать дальше →

Yac 2011: Технический отчёт

Reading time14 min
Views2.2K
Эх, раз, да ещё раз,
Да ещё yet another раз…


Не так давно завершилась конференция Яндекс YaC 2011 и теперь, когда стали доступны записи выступлений, я хочу представить вам технический отчёт о её посещении. В отчете я сосредоточился на той информации, которую вы можете получить, посмотрев запись того или иного доклада, и решить стоит ли тратить на это время. Для некоторых тем добавил дополнительные ссылки на ключевые ресурсы, а так же, по мотивам общения с авторами, описал устройства двух NoSQL технологий Яндекса: Elliptics Network и хранилища писем в Яндекс почте.

Итак, Yac 2011, как это было.
Читать дальше →

Cкоростная синхронизация миллиарда файлов

Reading time7 min
Views99K
Есть несколько идентичных серверов (4 ноды) на Amazon EC2 с Ubuntu. Каждый генерирует и хранит у себя на диске кэш, который хотелось бы синхронизировать. Но простой rsync тут не подойдет — файлов несколько миллиардов, nfs — слишком медлителен, и т. д. Полный список рассмотренных вариантов с пояснениями ниже.

К тому же, время от времени нужно удалять устаревшие файлы сразу на всех серверах, что пока делается вручную и занимает несколько суток. Вопрос наиболее быстрой для такого Use Case файловой системы планирую описать позже. Оговорюсь только, что по нескольким причинам была выбрана XFS.

После теста нескольких кластерных технологий и файловых систем, по совету старшего товарища, решили использовать тот же rsync, но в связке с inotify. Немного поискав в интернете готовое такое решение, дабы не изобретать велосипед, наткнулся на csyncd, inosync и lsyncd. На хабре уже была статья о csyncd, но он тут не подходит, т.к. хранит список файлов в базе SQLite, которая вряд-ли сможет сносно работать даже с миллионом записей. Да и лишнее звено при таких объемах ни к чему. А вот lsyncd оказался именно тем, что нам и было нужно.

UPD: Как показала практика, необходимо ощутимое измение и дополние в тексте. Я решил внести лишь незначительные правки в основную часть, а новыми выводами поделиться в конце статьи.
Читать дальше →

Генерация версии android приложения из ревизии subversion и git

Reading time6 min
Views3.9K
Когда пользователи сталкиваются с проблемами — всегда хочется точно знать какой именно версией ПО они пользуются. При использовании системы контроля версий и автоматической нумерации версий ПО, такую информацию можно предоставить пользователям, а в случае необходимости просто попросить продиктовать строку.

О том, как можно пронумеровать свой android проект написано здесь и здесь. В обоих статьях рассмотрен пример получения версии проекта с помощью 'svn info', причём в первой статье автор жалуется на отсутствие SvnAnt, а во второй статье автор замечает проблему, связанную с использованием 'svn info'. Проблема связана с тем, что 'svn info' выдаёт неточные сведения о ревизии рабочей копии.

Далее рассмотрен пример решения этой проблемы достаточно простым способом.
UPD: добавлен скрипт для git.
Читать дальше →

Модель расчёта вероятности преступлений

Reading time3 min
Views7.4K
В фантастическом фильме «Особое мнение» (Minority Report) действие происходит в 2054 году в отделе по предотвращению преступлений. Сотрудники отдела получают информацию от трёх «провидцев», чьи видения выводятся на экран. Будущих преступников арестовывают ещё до того, как он задумались об осуществлении своих планов.

В наши дни этот фантастический сюжет частично воплощается в реальность, с одним важным отличием: вместо «провидцев» информацию для полицейских патрулей поставляет математическая модель, которая обсчитывает статистику преступлений в разных районах города. Газета NY Times описывает работу полицейских патрулей в городе Санта-Крус (Калифорния), где подобная программа предотвращения преступлений работает в экспериментальном режиме.
Читать дальше →

Опыт использования GPU для финансового моделирования

Reading time5 min
Views8.3K
В этой статье я вкратце описываю свой опыт оптимизации одной задачи перебора, начиная от однопроцессорного алгоритма к многопроцессорному и к версии на OpenCL.



Читать дальше →

Линейная алгебра для разработчиков игр

Reading time19 min
Views797K
Эта статья является переводом цикла из четырёх статей «Linear algebra for game developers», написанных David Rosen и посвящённых линейной алгебре и её применению в разработке игр. С оригинальными статьями можно ознакомиться тут: часть 1, часть 2, часть 3 и часть 4. Я не стал публиковать переводы отдельными топиками, а объединил все статьи в одну. Думаю, что так будет удобнее воспринимать материал и работать с ним. Итак приступим.
Читать дальше →

Атомарная группировка, или Ни шагу назад!

Reading time8 min
Views17K

0. Присказка


В некотором царстве, в некотором государстве жил-был программист. Звали его, как полагается, Иван. Был он настоящим спецом, обладал всеми Тремя Великими Добродетелями Программиста, то есть был ленив, спесив и нетерпелив. Случилась в том царстве печаль великая: кризис. И выгнали Ваню с работы без выходного пособия. Горевал Ваня долго, а потом собрался с духом и разослал резюме по всему белу свету. Долго ли, коротко ли, вызвали Ваню на собеседование. Требований к соискателю было много, но главное — требовалось хорошо владеть регулярными выражениями. До собеседования — почти месяц, готовься — не хочу. Будучи человеком серьёзным, готовиться Иван решил обстоятельно. 3 недели и 3 дня он лежал на печи, почитывал Хабр и думал, как же неслыханно обстоятельно он будет готовиться. До собеседования остался 1 день. Ванюша мысленно обругал работодателей, которые назначают собеседование так скоро, что совсем подготовиться не успеваешь, слез с печи, сдал пивные бутылки и на вырученные деньги купил книжку по регексам. Читал он её до полного изнеможения, пока не отключился. Утром мы найдём сонную физиономию Ванюши лежащей, как на подушке, на этой самой книжке под Хабракатом.
Читать дальше →

Information

Rating
Does not participate
Location
Реховот, Мерказ, Израиль
Date of birth
Registered
Activity