Pull to refresh
0
Karma
0
Rating
siberianlaika @siberianlaika

User

Go: производительность горутин

Programming *Go *
Translation

Введение


В этом посте мы рассмотрим производительность горутин (goroutine). Горутины — это нечто в роде очень дешевых и легковесных потоков. Больше всего, наверное, они похожи на процессы в Erlang.

Согласно документации мы можем использовать сотни тысяч горутин в наших программах. И цель статьи — проверить и конкретизировать это.
Читать дальше →
Total votes 52: ↑51 and ↓1 +50
Views 14K
Comments 6

Go как язык для обучения программированию

Programming *Go *
tl;dr: Go достаточно многословный и строгий язык программирования с очень предсказуемой и стремительной кривой обучения, что делает его крайне удачной технологией для обучения программированию новоприбывших!

Я только приехал из штатов, после Google Code-In 2014 Grand Prize Trip, отдохнувший и веселый. Какое-то время думал написать отчет о том, чем призеры там занимались, как нас приняли в Mountain View и обо всем этом, но в какой-то момент понял, что все это совершенно бесполезно. Совсем недавно я по воле случая должен был помочь своему товарищу с домашкой по информатике (там было что-то вроде selection sort). Реализация требовалась на паскале, а я паскаль знаю очень плохо, как впрочем и другие неактуальные, по большей мере, языки программирования, вроде Ada.

В меня ударила молния и укусил гофер, после чего мое тело мутировало в какую-то кунг фу Go хренотень. Иными словами, я задумался о возможном потенциале моего любимчика среди новых технологий, Go, в качестве языка для обучения программированию новоприбывших (читай: школьников). Мне кажется, у Go есть все, что в принципе может быть нужно подобной программе и даже чуточку больше (например, в школе могли бы затрагивать тему параллельного, ни в коем случае не concurrent, программирования, которую не затрагивают, просто потому что FPS вообще не умеет гонять два куска кода одновременно). Под катом, собственно, мои мысли на этот счет. Кстати, пользуясь случаем, хочу передать привет divan0! Большое спасибо за твою просветительскую деятельность в тематическом хабе: Go действительно нуждается в огласке, ведь много людей до сих пор считают, что это какая-то страшная поделка уровня Plan9 из 80-х и к тому же, без обобщенного программирования (в каждой шутке есть доля шутки), а ты рассказываешь людям очень правильные вещи на понятном для них языке! Никакого дисклаймера не будет, но я настоятельно не рекоммендую воспринимать содержимое статьи абсолютно серьезно, ведь я человек, у которого есть целых два гофера: синий и розовый!
Читать дальше →
Total votes 50: ↑35 and ↓15 +20
Views 28K
Comments 96

Наберитесь смелости сделать не как все. 12 устаревших интерфейсных и технологических решений

Luxoft corporate blog Interfaces *
На первом месте должно быть удобство пользователя. К сожалению, в интернете слишком много решений, которые годами заимствуются потому что «как у всех», но от которых давно стоило отказаться. Ниже ряд таких подходов из личной коллекции. Написанное не претендует на истину, все темы дискуссионные.

Подтверждение пароля или email при регистрации


Как часто случается, что человек промахивается, и набирает неправильный пароль, когда он внимательно набирает его в первый раз при регистрации? Что случится, если он при регистрации ошибется в пароле? Какие эмоции вы испытываете, когда вас просят ввести подтверждение пароля? Было ли хоть раз, что вы не копировали подтверждение email из первого поля, а набирали его руками?


Читать дальше →
Total votes 355: ↑325 and ↓30 +295
Views 231K
Comments 384

Всё, что вы хотели знать про GOPATH и GOROOT

Go *
Несмотря на то, что Go считается одним из самых легких для входа языков, приходится регулярно слышать: «как-то все непонятно, какие-то переменные GOROOT и GOPATH нужно устанавливать». И хотя тема полностью раскрыта на официальном сайте Go, не будет лишним объяснить совсем простым языком.

TL;DR


Теперь чуть подробнее:
Читать дальше →
Total votes 26: ↑24 and ↓2 +22
Views 142K
Comments 22

FORTH: Самоопределяющиеся слова

Open source *Programming *Forth *
Пусть имеется некоторый проект на языке Форт, в котором используется достаточно большое число однотипных переменных.
Например: x, y, z, x', y', z', x'', y'', z'', s, m и так далее…
Для их определения придется каждый раз выписывать слово VARIABLE, а это громоздко, уныло и некрасиво. Можно ли как-то сделать повеселее?
Указать, что дальше будут определены переменные и выписать их имена.
Что-то вроде:
VARIABLES:
  x   y   z  
  x'  y'  z'
  x'' y'' z''
  s   m
;VARIABLES

Как это можно реализовать?
Total votes 19: ↑17 and ↓2 +15
Views 6.6K
Comments 10

Forth и шейдеры

Abnormal programming *Image processing *Forth *
Sandbox
Tutorial
Речь у нас пойдёт о поэзии. Минимализм языка программирования Forth и красота образов демосцены подтолкнули программиста Брэда Нельсона к идее Forth Haiku. Подражая японским хайку, Брэд писал свои первые программы из трёх строк, состояли они из пяти, семи, и снова пяти слов. Но в отличии от традиционного японского жанра, поэзия на языке Forth порождала картины не в воображении читателя, а зримо, на экране компьютера. Эта затея могла бы остаться причудой одинокого фаната компьютерного ретро (Forth прочно ассоциируется со старыми добрыми семидесятыми), если бы Брэд не воплотил её на самой что ни на есть современной платформе (WebGL) и не сделал бы онлайн-редактор общедоступным.

Вот пример кода Forth Haiku и изображение, которое этот код создаёт: «Light Drop» by Brad Nelson.

: iii x y z*
Sin ; x 5 * x y
- iii exp y iii

Light Drop by BradN

Впереди нас ждут немало удивительных (в том числе и «живых») картин, но сперва — немного теории.
Читать дальше →
Total votes 88: ↑86 and ↓2 +84
Views 25K
Comments 44

Хорошая работа, Apple, вы обманули весь мир

IT-companies
Translation
Apple выиграла патентное разбирательство против Samsung с присуждением более одного миллиарда долларов в качестве возмещения ущерба. Можете почитать об этом подробнее на MacRumors.

Ответ Apple: «Мы благодарны присяжным за свою работу и за потраченное время на наш рассказ, и мы счастливы, что наконец-то можем это сказать. Множество доказательств, представленных во время процесса, показали, что Samsung занимался копированием намного глубже, чем мы думали. Судебные процессы между Apple и Samsung были о гораздо большем, чем просто о патентах и деньгах. Они были о ценностях. В Apple мы ценим оригинальность и инновации, и мы посвятили свою жизнь созданию лучших на Земле устройств. Мы делаем эти продукты для того, чтобы порадовать наших клиентов, а не для того, чтобы наши конкуренты их скопировали. Мы аплодируем суду за признание действий Samsung’а преднамеренными и за громкий и яркий знак, что воровство это нехорошо.»

Ответ Samsung: «Сегодняшний вердикт не должен рассматриваться, как победа Apple, но как потеря для Американского потребителя. Это приведёт к меньшему выбору, низкой инновации и потенциально высоким ценам. Очень жаль, что патентным правом можно манипулировать для отдачи одной компании монополии над прямоугольниками с закругленными углами, или технологией, которая улучшается каждый день Samsung’ом и другими компаниями. Потребители имеют право выбирать, и они знают что покупают, приобретая продукты Samsung. Это не последнее слово в этом деле или в других битвах, которые ведутся в судах и трибуналах по всему миру, некоторые из которых уже отклонили претензии Apple. Samsung продолжит применять инновации и предоставлять потребителю выбор.»
Читать дальше →
Total votes 410: ↑316 and ↓94 +222
Views 21K
Comments 465

Gosbook.ru — социальная сеть для российских чиновников открыла регистрацию для всех желающих

Social networks and communities
image

У российских чиновников появилась собственная социальная сеть «Госбук» (gosbook.ru). Проект обошелся в 1 млн рублей, полученный в виде гранта. Эксперты уверены, что такой проект нужен, но, чтобы он был реальным инструментом, необходима поддержка государства. А с учетом того что проект разрабатывался при участии Медведева поддержка будет.

Читать дальше →
Total votes 66: ↑52 and ↓14 +38
Views 1.6K
Comments 108

Анализ утёкших паролей Gmail, Yandex и Mail.Ru

Information Security *
Совсем недавно в публичный доступ попали базы паролей популярных почтовых сервисов [1,2,3] и сегодня мы их проанализируем и ответим на ряд вопросов о качестве паролей и возможном источнике (или источниках). Так же мы обсудим метрики качества отдельных паролей и всей выборки.

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

Формально, мы рассмотрим следующие вопросы: насколько надежными являются пароли в базе и могли ли они быть собраны словарной атакой? Есть ли признаки фишинговых атак? Могла ли «утечка» данных быть единственным источником данных? Могла ли данная база быть аккумулирована в течение длительного периода или данные исключительно «свежие»?

Структура статьи:

  1. Описание данных
  2. Невалидные пароли и не-пароли
  3. Распределение длины паролей
  4. Распределение надёжности паролей
  5. Словарная атака
  6. Топ паролей
  7. Выборка Gmail
  8. Выборка Rambler
  9. Анализ открытых источников
  10. Заключение

Читать дальше →
Total votes 149: ↑139 and ↓10 +129
Views 141K
Comments 107

PHP создан, чтобы умирать

PHP *
Translation
Дисклеймер: у меня за спиной более десяти лет разработки на PHP. Я начал использовать его, когда PHP4 был совсем малышом, а PHP5 — только мечтой компании Zend. С помощью него я сделал многое, я любил его, проклинал и не без стыда наблюдал за тем, как он растёт и развивается. Я всё ещё использую его в некоторых доставшихся по наследству проектах, но предпочитаю больше его не применять. Также хочу отметить, что я не сотрудничаю с создателями фреймворков или инструментов, упомянутых в статье.

TL;DR (англ. too long; didn't read. Так, в частности, говорят, когда лень читать статью целиком — прим. пер.): если ваш проект основан на функциях фоновых процессов (фоновых служб, демонов — прим. пер.), избегайте PHP.

По-моему, в большинстве случаев ненавистники PHP упускают один весьма важный момент: PHP создан, чтобы умирать. Это не значит, что довольно способный (в какой-то степени) язык программирования исчезнет в никуда; это всего лишь означает, что ваш PHP код не может выполняться вечно. В настоящее время, спустя 13 лет после первого официального релиза в 2000 году, эта мысль до сих пор кажется мне вполне обоснованной.
Читать дальше →
Total votes 182: ↑140 and ↓42 +98
Views 151K
Comments 260

Как работают одноразовые пароли

Information Security *Cryptography *
Tutorial

Вступление


Как показывает практика, существует определенное непонимание принципов работы одноразовых паролей (это те самые, которые используются в GMail, в спец. токенах платежных систем и так далее).

Прочитав эту небольшую статью, Вы разберетесь в принципе работы одноразовых паролей на основе хэшей, а заодно напишете на Python небольшую программу, которая умеет вычислять пароли для двухэтапной аутентификации Google.
Читать дальше →
Total votes 130: ↑126 and ↓4 +122
Views 110K
Comments 72

Архитектура форм в Symfony2

PHP *Symfony *
Translation
Картинка для привлечения внимания

В Symfony 2 появился совершенно новый компонент для работы с формами, который, насколько я знаю, легко заменит большинство подобных библиотек для PHP и по функционалу, и по возможности в расширении оного (конечно, если не брать в расчет небольшие недостатки при работе с JavaScript). Разработка этого компонента заняла более двух лет, хотя думать над ним я начал еще где-то в 2009-ом году или даже раньше. С каждой новой версией этот компонент становится все более и более стабильным, а полностью стабильная версия ожидается с выходом Symfony 2.2.

Данный пост приурочен к выходу Zend Framework 2 Form RFC, так как мне кажется, что его разработчики, по сути, сделали много того, что уже было сделано нами. Конечно же всем ясно, что Zend Framework 2 должен обладать прослойкой для работы с формами, который полностью учитывает особенности компонентов, поставляемых с фреймворком. Целью данного поста является попытка показать, что Symfony2 Forms прекрасно подходит под эти требования. Функционал, присущий Symfony2, может быть легко убран: код для обработки форм и все уровни абстракций полностью независимы. Привязать же поддержку особенностей компонентов Zend-а так же не составит труда.

Создание обобщенной библиотеки для работы с формами, которая покрывает все возможные сценарии использования, возникающие при разработке, было непростым испытанием, долгим и сложным делом, которое, к тому же, еще не завершено. Сотрудничество и дальнейшее совместное развитие должно помочь добиться более гибкого и простого управления формами из PHP.
Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Views 23K
Comments 110

Датчик освещённости из веб-камеры вашего ноутбука

Configuring Linux *
image
Почти всегда на ночь (или утром, со словами «Что? Рассвет уже?») я включаю на ноутбуке фильм или сериал. Чтобы бубнило и успокаивало. Недавно заметил, что совсем не уменьшаю яркость при включении. Свет светит в глаза, мешает уснуть. Решается поворотом на другой бок или уменьшением яркости, конечно, но я слишком ленив, чтобы искать Fn+уменьшить яркость или установить и вывести апплет яркости. Уменьшение яркости при неактивности ставить не захотел, потому как это меня раздражает (пьешь себя кофе и смотришь код, тут резко до нуля так хрясь). Вспомнил про свою старую Nokia E70 (ох и шикарный телефон был), в котором был индикатор освещённости. Подумал, что такой датчик может заменить и обычная камера.
Читать дальше →
Total votes 96: ↑89 and ↓7 +82
Views 22K
Comments 31

Разработка для Drupal 7 с помощью новой концепции сущностей (Entity)

Drupal *
Sandbox
Концепция сущностей (Entity), которая будет рассматриваться в данной статье является одной из новинок, представленных в Drupal 7. Для того чтобы осознать всю новизну предлагаемого подхода, следует сделать небольшой экскурс в историю и вспомнить, как все было в Drupal 6.
Читать дальше →
Total votes 51: ↑43 and ↓8 +35
Views 16K
Comments 16

Учет затраченного времени с Emacs и org-mode

Emacs *
Если вам, как и мне, платят почасово, то наверняка заказчик захочет знать, на что именно ушло время и сколько.
Да и в любом случае, полезно знать это, даже если только для себя.

В этой статье я расскажу об одном из способов учета затраченного времени — org-mode в Emacs.
Этот способ хорош тем, что он очень гибок и при желании все настраивается под себя, работает практически на всех операционных системах и платформах, и довольно прост в использовании.

image
Читать дальше →
Total votes 25: ↑24 and ↓1 +23
Views 13K
Comments 17

Введение в org-mode emacs

Emacs *
Translation
По сути это даже не перевод, а свободное изложение моих мыслей на эту тему, после ознакомления с указанным источником. То есть — переработка. Некоторые, показавшиеся очевидными, вещи, были намеренно исключены из текста. Какие-то, показавшиеся полезными — добавлены.

Введение


Описано было довольно хорошо вот здесь.

Как его подключить

Если у Вас версия 22 и выше — он у Вас уже установлен. Если нет — установите новую версию. :)

Дальше - больше.
Total votes 37: ↑29 and ↓8 +21
Views 41K
Comments 29

Memoization в Python

Python *
Memoization – свойство функций сохранять (кешировать) результаты вычислений, дабы не вычислять в последствии повторно.

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

Допустим, у нас есть некая функция bigfunc, результат которой зависят только от переданных в нее аргументов, а сложность вычислений достаточно большая. Естественно нам не хотелось бы производить вычисления при каждом вызове bigfunc если она уже вызывалась ранее с теми же параметрами. Тут то нам на помощь и приходит memoization.

Для python декоратор для функции будет выглядеть следующим образом:

import cPickle
def memoized(func):
    memory = {}
    def memo(*args,**kwargs):
       hash = cPickle.dumps((args, sorted(kwargs.iteritems())))
       if hash not in memory:
           memory[hash] = func(*args,**kwargs)
       return memory[hash]
    return memo

Далее, нам достаточно объявить bigfunc как

@memoized
def bigfunc(…):
…

Или переопределить, если она уже объявлена:

bigfunc = memoized(bigfunc)

Декоратор, объявленный в начале статьи, работает только с пиклезуемыми объектами. Если ваша функция работает с непиклезуемыми объектами – вы можете заменить

hash = cPickle.dumps((args, sorted(kwargs.iteritems())))

на

hash = (tuple(args), frozenset(kwargs.items())

но вы потеряете возможность работы с mutable объектами.

Декоратор можно легко модифицировать, для ограничения количества закешированных элементов.
Total votes 57: ↑51 and ↓6 +45
Views 14K
Comments 17

Drupal day 3 декабря

Drupal *
DrupalCamp Moscow

Рунетовское сообщество вебплатформы Drupal (www.drupal.ru) проводит 3 декабря семинар Drupal Day в Москве, участие бесплатное, программа и подробности по месту и времени проведения опубликованы на сайте moscow.drupalcamp.ru. Для участия требуется регистрация — там же на сайте. Ввиду ограничений помещения семинар расчитан ровно на сто участников.

Вот неполный список докладов Drupal Day:
  • Заглянем в будущее: Drupal 7
  • Пример связи со сторонними скриптами: интеграция с PHPBB3
  • VDS и DS: стереотипы и оптимизация
  • Прототипирование проекта на Drupal
  • Работа с Simpletest
  • Примеры использования Drupal: о создании сайта forbesrussia.ru
  • Обзор инструментов разработчика и вебмастера на unix-десктопе

Также будут доклады по работе JQuery/JavaScript/AJAX, созданию тем оформления в Drupal, работе с Google Maps и запланирована сессия пятиминутных блиц-докладов на разные темы. Докладчики — участники рунетовского сообщества drupal.ru.

Цели мероприятия:
  • Повышение квалификации Drupal-разработчиков и пользователей.
  • Вовлечение новых разработчиков в работу с платформой Drupal и проект разработки Drupal.
  • Привлечение внимания вебстудий к Drupal.
  • Контакты между разработчиками и работодателями.
  • Привлечение внимания к движению СПО в России.


Спонсор Drupal Day 3 декабря — компания Мастерхост. Информационное спонсорство мероприятий на сегодняшний день оказывают: Аналитический портал «CMS Magazine», Вебпланета, Хабрахабр, Сервис 1PS.RU, Новостной ресурс NetNews.by, Издательство «Открытые системы», Журнал Computerworld, Журнал PC Magazine, Журнал Designcollector.

Больше информации на сайте moscow.drupalcamp.ru.
Total votes 51: ↑39 and ↓12 +27
Views 613
Comments 35

Демо-доступ к Drupal-сайтам версий 5.0, 6.10 и 7.х

CMS *
Допустим, вы никогда не были «внутри Друпала». И вам при этом очень хочется полазить в админке Drupal и понять, с чем эту систему едят. В таком случае, ссылки, которые я накопал, для вас:

На русском языке



1. Демо-доступ к сайту с Drupal версии 7.x

Логин: demo
Пароль: demo

2. Демо-доступ к сайту с Drupal версии 6.10

Логин: demo
Пароль: demo

3. Демо-доступ к сайту с Drupal версии 5.0

Логин: admin
Пароль: admin

4. Доступ без авторизации к www.video.idrupal.ru — любой посетитель может выложить здесь видеофайл.

На английском языке



1. Демо-доступ к новостному сайту

Логин: demo
Пароль: demo

(Изменения удаляются каждый час.)

2. Участник Drupal-сообщества по имени Shaun выложил данные для демо-доступа к community-сайту

Логин: Viewer
Пароль: viewme

3. Демо-доступ к блогу

Логин: superadmin
Пароль: superadmin
Total votes 18: ↑10 and ↓8 +2
Views 3.1K
Comments 15

Drupal — победитель Webware 100 Awards

Drupal *
image
Drupal уже третий год подряд получает награду Webware 100. В этом году Drupal участвовал в категории Social & Publishing, вместе с известными сервисами: MySpace, Facebook, Twitter, и Wordpress.com. Drupal — один из 10 лидеров в этой категории.

Цитата из CNET:
Награда Webware 100 присуждается лучшим Web 2.0 сайтам, сервисам и продуктам, известным в Интернете на сегодняшний день. После просмотра более 6 000 кандидатов, были отобраны 300 финалистов. Пользователи совершили финальный выбор, отдав более 600 000 голосов за 100 самых лучших продуктов — по 10 в 10-ти категориях.

Ура, товарищи!
Total votes 53: ↑40 and ↓13 +27
Views 576
Comments 52

Information

Rating
Does not participate
Location
Россия
Works in
Registered
Activity