Pull to refresh
25
0
Laphroaig Vi @laphroaig

User

Send message

Одно предложение, которое делает нас сильнее

Reading time2 min
Views93K
Это мой самый короткий топик, суть которого в одном предложении. Часто именно с этого предложения начинается успешный стартап, бизнес и любое другое начинание.

Это шаблон описания сути вашей компании или проекта в одном предложении. Я открыл его для себя во время стажировки в США. Составив его, мы реально становимся сильнее. В последствии мне это помогло выбрать правильный курс, сфокусироваться и расставить приоритеты.
Читать дальше →
Total votes 198: ↑168 and ↓30+138
Comments51

Vim :bw, :bd, :bun, :quit, :close. Что со всем этим делать?

Reading time3 min
Views11K
Vim имеет множество команд для закрытия чего угодно и в каких угодно сочетаниях, но чего он не умеет так это закрывать все одной командой. Человеку который начал использовать Vim недавно, это может показаться довольно странным. Попробуем разобраться, как исправить эту ситуацию.
Читать дальше →
Total votes 26: ↑23 and ↓3+20
Comments39

Сокеты в Python для начинающих

Reading time4 min
Views578K

Предисловие


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



Что это


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

Существуют клиентские и серверные сокеты. Вполне легко догадаться что к чему. Серверный сокет прослушивает определенный порт, а клиентский подключается к серверу. После того, как было установлено соединение начинается обмен данными.

Читать дальше →
Total votes 75: ↑50 and ↓25+25
Comments28

Частичное применение и каррирование в C++

Reading time12 min
Views16K
Приветствую.

Уж не знаю, как так вышло, но игрался я на досуге с лямбда-выражениями в С++11 (о которых, к слову, я уже писал статью, снискавшую пару лет назад на удивление достаточно неплохую популярность), и под наркотическим воздействием впечатлением от языка Haskell начал разбираться с такими понятиями, как частичное применение и каррирование в контексте языка С++. И для начала, пожалуй, неплохо бы нам определиться с этими терминами.

Читать дальше →
Total votes 57: ↑54 and ↓3+51
Comments45

Памятка пользователям ssh

Reading time13 min
Views1.5M
abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

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

Оглавление:
  • управление ключами
  • копирование файлов через ssh
  • Проброс потоков ввода/вывода
  • Монтирование удалённой FS через ssh
  • Удалённое исполнение кода
  • Алиасы и опции для подключений в .ssh/config
  • Опции по-умолчанию
  • Проброс X-сервера
  • ssh в качестве socks-proxy
  • Проброс портов — прямой и обратный
  • Реверс-сокс-прокси
  • туннелирование L2/L3 трафика
  • Проброс агента авторизации
  • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
Читать дальше →
Total votes 360: ↑352 and ↓8+344
Comments148

CRIU — новый амбициозный проект для сохранения и восстановления состояния процессов

Reading time4 min
Views6.2K
CRIU (application Checkpoint/Restore In Userspace) — это амбициозный, быстро развивающийся проект, который позволяет сохранить состояние программы в виде контрольной точки, и впоследствии возобновить работу приложения с этой точки.
Возможности применения программного обеспечения для создания контрольных точек достаточно разнообразны. К примеру, OpenVZ использует похожий механизм для “живой” миграции. Parallels Virtuozzo использует подобный механизм для быстрого возобновления работы контейнеров после обновления ядра. CRIU уже используется в высокопроизводительных кластерах для для сохранения промежуточных результатов вычислительных процессов, используемых для возобновления работы приложения в случае сбоя.
В этой статье рассказывается, как CRIU сохраняет и восстанавливает состояние программы, и почему этот проект может быть успешнее своих предшественников.
Читать дальше →
Total votes 52: ↑51 and ↓1+50
Comments19

Agile: танцы с бубном или наука

Reading time3 min
Views15K
Множество достаточно опытных разработчиков и менеджеров пробовало Agile, и им не понравилось. Многие директора, руководители и специалисты даже не пробовали, ибо считают Agile религией, которая помогает, если в неё верить, либо, вообще, только создают впечатление эффективности у «верующих».



Понять последних можно, ведь большинство статей и agile-евангелистов говорят, примерно следующее: «Делайте так, как говорит методология, и ваш проект попадёт в рай. Если нарушите хотя бы одну из практик, то Agile покарает вас»
Так есть ли прок от Agile?
Total votes 42: ↑31 and ↓11+20
Comments59

Portable Components, кроссплатформенная библиотека для C++

Reading time13 min
Views28K
«Система должна быть спроектирована так,
чтобы оставаться как можно проще
после серии внесенных в нее изменений»

Бьярне Строуструп – программист, автор языка C++

Преамбула


В данной статье мне бы хотелось бы рассказать о довольно популярной, но так редко освещаемой на Хабре библиотеке Portable Components (сокр. POCO). Она будет полезна как разработчикам бизнес-логики программного продукта, так и в решении большинства прикладных задач. При всем изобилии кроссплатформенных библиотек для C++ всё больше людей сталкиваются с POCO лицом к лицу и не знают с чего начать. В данной статье я постараюсь описать технологии, заложенные в библиотеке и дать простейшие примеры решения некоторых задач. Также хотелось бы отметить, что за плечами библиотеки множество успешных как Open Source, так и коммерческих проектов.
Читать дальше →
Total votes 80: ↑80 and ↓0+80
Comments40

Использование разделяемой памяти в Java и off-heap кеширование

Reading time6 min
Views59K
На прошлой неделе состоялся успешный эксперимент по запуску нового решения для download-сервиса. Один достаточно скромный сервер (2 x Intel Xeon E5620, 64 GB RAM) под управлением Java-приложения собственной разработки принял на себя нагрузку восьми Tomcat'ов, обслуживая более 70 тысяч HTTP-запросов в секунду общей пропускной способностью 3000 Mb/s. Таким образом, весь трафик Одноклассников, связанный с пользовательскими смайликами, обрабатывался одним сервером.

Вполне естественно, что высокие нагрузки требовали нестандартных решений. В цикле статей о разработке высоконагруженного сервера на Java я расскажу о проблемах, с которыми нам пришлось столкнуться, и о том, как мы их преодолели. Сегодня речь пойдет о кешировании изображений вне Java Heap и об использовании Shared Memory в Java.
Читать дальше →
Total votes 65: ↑64 and ↓1+63
Comments68

Публичные выступления. Что? Как? Зачем?

Reading time5 min
Views60K
Доброго времени суток, хабролюди!

Ценность умения публично выступать сложно переоценить, но многие обходят сторонной вопросы ораторского искусства. А потом удивляются, почему их не слушают, а если и слушают, то не заинтересовываются темой. Если вам хочется научиться общаться с аудиторией, если вы хотите узнать немного больше об ораторском искусстве, то добро пожаловать под кат.
Читать дальше →
Total votes 53: ↑41 and ↓12+29
Comments13

RIM: Мы создаем качественно новый продукт. И готовы с ним снова завоевать мир

Reading time11 min
Views24K
Генеральный директор и президент компании RIM Торстен Хайнс вышел на сцену BlackBerry World 2012 не только для того, чтобы продемонстрировать элементы новой мобильной платформы RIM, но и показать миру, что компания еще не готова сдаться. RIM ставит все на BlackBerry 10, абсолютно новую платформу. «Я здесь потому, что я верю в ту уникальную ценность, которую BlackBerry ежедневно предоставляет нашим клиентам», — сказал тогда Хайнс аудитории. Он рассказал о полном перезапуске мобильной платформы RIM, которая «перейдет на следующий уровень и предложит нечто уникальное». Изменения ОС настолько разительны, что у нового BlackBerry 10 Dev Alpha, показанного компанией, нет физической клавиатуры. Они всегда были визитной карточкой платформы. Если их не будет, что заставит фанатов платформы пользоваться устройствами от RIM? И что убедит пользователей других платформ перейти на телефоны BlackBerry? Компания не исключила физические клавиатуры из свои планов полностью, но когда топовое устройство для разработчиков выходит без клавиатуры, становится понятно, что грядут изменения.

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

Мы побеседовали с Андреем Киселевым, главой российского представительства Research In Motion, о будущем платформы и тех усилиях, которые вкладывает RIM в привлечение разработчиков на новую платформу.

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

Фотографируемся после каждого коммита (Linux, OSX)

Reading time1 min
Views4K
Программа imagesnap (OSX) позволяет делать фотографии веб-камерой из командной строки. Например, она может автоматически фотографировать программиста после каждого коммита в репозиторий git, нужно всего лишь добавить следующий код в .git/hooks/post-commit.

#!/usr/bin/env ruby
file="~/.gitshots/#{Time.now.to_i}.jpg"
puts "Taking capture into #{file}!"
system "imagesnap -q -w 3 #{file}"
exit 0

Потом кадры собираются в видеоролик программой tlassemble.
Читать дальше →
Total votes 71: ↑54 and ↓17+37
Comments44

Ещё более современный C++

Reading time6 min
Views49K
“C++11 feels like a new language.” – Bjarne Stroustrup

Не так давно Герб Саттер открыл на своём сайте новую страничку — Elements of Modern C++ Style, где он описывает преимущества нового стандарта и то, как они повлияют на код.
А под катом прячется вольный перевод содержимого этой странички.
Total votes 141: ↑135 and ↓6+129
Comments166

А понимаете ли Вы move семантику?

Reading time3 min
Views17K
Добрый день!

Еще вчера я честно думал, что разобрался как работают rvalue references в C++11. Думал до тех пор, пока не наткнулся на грабли.

Итак, я предлагаю размять мозги и попробовать написать функцию move_if_rr. Такой себе тест на понимание: успех засчитывается за функцию, которая работает правильно при условии, что Вы ее ни разу не отлаживали. Детали задания под катом.
Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments51

Кластеризация на клиенте или как показать 10000 точек на карте

Reading time7 min
Views31K
Существует несколько типов проектов,
для которых вывод геоинформации является
необходимым: сайты по недвижимости, каталоги компаний,
каталоги достопримечательностей, доски объявлений и другие.
Для этих сайтов я решил разработать плагин к goolge API 3 и Яндекс API 2.

Основные требования:
  1. Возможность подключения без глубокой подготовки данных на сервере, а именно, используя только уже имеющиеся географические координаты объектов.
  2. Простой протокол подготовки и передачи данных.
  3. Быстрый клиентский кластеризатор с ДВУМЯ типами меток: кластер и группа. Кластер — несколько объектов, расположенных рядом. При клике кластер “раскрывается”, то есть увеличивает зум пока объекты будут на расстоянии, большем чем расстояние кластеризации. Группа — несколько объектов в одной точке (на минимальном расстоянии). При клике на группу на любом зуме выводится список объектов в группе.
  4. Отображение до 10000 точек с использованием кластеризатора.
  5. Отображение в ie7, на мобильных устройствах (iPad первого поколения).
  6. Шаблонизация на клиенте двух инфоокон — группового кластера и самого объекта.
  7. Использование спрайта для меток.
  8. Возможность использования неограниченного количества типов меток (иконок) для разных типов объектов.
  9. Возможность использования нескольких размеров иконки для разного диапазона зума.

В статье я опишу несколько подходов, которые были использованы для реализации этого плагина.
Читать дальше →
Total votes 53: ↑52 and ↓1+51
Comments22

Методы, как first class citizens в C++

Reading time5 min
Views4.4K
На днях, гуляя по багтрекеру gcc наткнулся на интересный баг, в нем используется сразу несколько возможностей C++11:


Анализируя этот баг, я подумал, что теперь можно удобно реализовать методы как first class citizens
Читать дальше →
Total votes 38: ↑36 and ↓2+34
Comments6

Рандомизированные деревья поиска

Reading time8 min
Views56K

Не знаю, как вы, уважаемый читатель, а я всегда поражался контрасту между изяществом базовой идеи, заложенной в концепцию двоичных деревьев поиска, и сложностью реализации сбалансированных двоичных деревьев поиска (красно-черные деревья, АВЛ-деревья, декартовы деревья). Недавно, перелистывая в очередной раз Седжвика [1], нашел описание рандомизированных деревьев поиска (нашлась и оригинальная работа [2]) — настолько простое, что занимает оно всего треть страницы (вставка узлов, еще страница — удаление узлов). Кроме того, при ближайшем рассмотрении обнаружился дополнительный бонус в виде очень красивой реализации операции удаления узлов из дерева поиска. Далее вы найдете описание (с цветными картинками) рандомизированных деревьев поиска, реализация на С++, а также результаты небольшого авторского исследования сбалансированности описываемых деревьев.
Читать дальше →
Total votes 88: ↑85 and ↓3+82
Comments18

Torrent Stream для Ubuntu

Reading time5 min
Views67K
Началось открытое тестирование ПО Torrent Stream на ОС Linux/Ubuntu!

image
Лучшее в мире программное приложение для потокового/онлайн воспроизведения видео и аудио контента через торренты, теперь доступно для пользователей Ubuntu

С детальной информацией о Системе Torrent Stream и выпускаемом ПО, в рамках данного проекта, можно ознакомиться на сайте torrentstream.org

Всех кто уже знаком с функциями и возможностями Torrent Stream и желает принять участие в
тестировании или просто хочет узнать какие на данный момент продукты доступны
для Linux/Ubuntu, милости просим под кат.
Далее
Total votes 64: ↑54 and ↓10+44
Comments51

Паттерны ООП в метафорах

Reading time17 min
Views566K
Большинство литературы посвященной паттернам в ООП (объектно-ориентированном программировании), как правило, объясняются на примерах с самим кодом. И это правильный подход, так как паттерны ООП уже по-умолчанию предназначаются для людей, которые знают что такое программирование и суть ООП. Однако порой требуется заинтересовать этой темой людей, которые в этом совершенно ничего не понимают, например «не-программистов» или же просто начинающих «компьютерщиков». Именно с этой целью и был подготовлен данный материал, который призван объяснить человеку любого уровня знаний, что такое паттерн ООП и, возможно, привлечет в ряды программистов новых «адептов», ведь программирование это на самом деле очень интересно.
Статья предназначена исключительно для новичков, так что «старожилы» ничего нового для себя не узнают. В основном статья описывает известные паттерны из книги «Приемы объектно-ориентированного программирования. Шаблоны проектирования.», но более популярным и простым языком.
Читать дальше →
Total votes 214: ↑201 and ↓13+188
Comments86

Steam для Linux. Скоро

Reading time1 min
Views6.7K


Ещё в апреле Майкл Ларабел (ресурс Phoronix) посетил офис Valve и подтвердил, что версия Steam для Linux пока в разработке. Также он сообщил, что проектом руководит Гейб Ньюэлл.

Запуск Steam под Линукс требует еще и портирования некоторых игр специально для адекватной работы под этой ОС. Примерный список (в порядке приоритета):

Left 4 Dead 2
Half-Life
Portal (?)

Единственное, чего раньше точно не знали, так это примерной даты выпуска Steam для Линукс. Сегодня ситуация изменилась.
Читать дальше →
Total votes 104: ↑93 and ↓11+82
Comments158

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity