Pull to refresh
33
0
Send message

С чего начать новичку в Go

Reading time 2 min
Views 160K
Если вы решили попробовать замечательный язык Go, но не знаете с чего начать, вам прямая дорога в этот пост, где я постарался перечислить все необходимые для новичков ресурсы.
Читать дальше →
Total votes 56: ↑50 and ↓6 +44
Comments 50

Еще один способ отключения сбора телеметрии в OC Windows 10

Reading time 10 min
Views 349K
Микрософт с помощью пасьянса и косынки учила пользователей пользоваться мышью,
теперь с помощью windows 10 учит читать лицензионное соглашение.

После выхода windows 10 сразу появились сообщения о сборе информации о действиях пользователей и много обсуждений, что делать. Достаточно быстро пользователи составили список основных серверов, собирающих информацию и попытались их заблокировать через файл hosts. Но скептики сразу выдвинули здравое предположение, что MS мог предусмотреть этот метод и некоторые адреса прописать в коде. Тем более, что MS всегда может актуализировать адреса серверов через windows update.

В нашей компании начали появляться первые пользователи windows 10, и мы решили опробовать блокировку передачи телеметрии через встроенный windows firewall.
Читать дальше →
Total votes 97: ↑89 and ↓8 +81
Comments 245

Отказываемся от коллбэков: Генераторы в ECMAScript 6

Reading time 6 min
Views 34K
Я постоянно слышу людей, ноющих об асинхронных коллбэках в JavaScript. Держать в голове порядок исполнения в этом языке немного трудно (это тот случай, который называют «Callback Hell» или «The Pyramid of Doom»), если до этого ты имел дело с синхронным программированием. Моим обычным ответом было «тебе придется как-то с этим обходиться». В конце концов, ожидаем ли мы, что все языки программирования будут выглядеть и ощущаться одинаково? Конечно нет.

Все поменял недавний обзор черновика ECMAScript 6, в котором описываются генераторы — возможность языка, которая целиком изменит наш способ написания и серверного, и клиентского JavaScript. С помощью генераторов мы можем превратить вложенные коллбэки в похожий на синхронный код без блокирования нашей единственной event loop.
Например, этот код:
    setTimeout(function(){
        _get("/something.ajax?greeting", function(err, greeting) {
            if (err) { console.log(err); throw err; }
            _get("/else.ajax?who&greeting="+greeting, function(err, who) {
                if (err) { console.log(err); throw err; }
                console.log(greeting+" "+who);
            });
        });
    }, 1000);

может быть написан так:
    sync(function* (resume) {
        try (e) {
            yield setTimeout(resume, 1000);
            var greeting = yield _get('/something.ajax?greeting', resume)
            var who = yield _get('/else.ajax?who&greeting=' + greeting, resume)
            console.log(greeting + ' ' + who)
        }
        catch (e) {
            console.log(e);
            throw e;  
        } 
    });

Интересно, не правда ли? Централизованная обработка исключений и понятный порядок исполнения.
Читать дальше →
Total votes 44: ↑40 and ↓4 +36
Comments 61

React boilerplate — Rocket React

Reading time 3 min
Views 18K
image

Хочу представить вашему вниманию boilerplate (skeleton) на базе React.js + Backbone для быстрого старта разработки приложения любой сложности. Эта связка помогла нашей команде в срок сделать сложное приложение с минимальным количеством проблем а простота позволила быстро подключать новых разработчиков в процесс.
Читать дальше →
Total votes 24: ↑20 and ↓4 +16
Comments 23

Chatroulette своими руками — 50 строк кода

Reading time 1 min
Views 28K
image
Пару месяцев назад я приглашал всех на веб-семинар о p2p во Flash, но сделал это слишком поздно, поэтому наверняка большое количество желающих на него не попало. Самое ценное, что я извлек из этого семинара — то, что peer-to-peer приложения во Flash делать очень легко. Правда у самого руки очень долго до этого не доходили.

Но буквально вчера руки очень сильно зачесались, и посидев ночку я разобрался в том, как работает технология p2p во Flash. Соединить видеопотоки двух flash-клиентов мне показалось мало, поэтому решил сделать что-то более интересное:
  1. Пользователь открывает страничку
  2. Выбирает тему для разговора (один из постов на главной хабры)
  3. Разговаривает со всеми, кто выбрал эту же тему

Сделал. Тут мой пример видеоконференции, исходники клиента и сервера можно скачать отсюда. Минимальные требования для примера — наличие Flash Player 10 и вэб-камеры.

UPD: Все это добро хостится на AppEngine, могут закончиться бесплатные квоты и все перестанет работать. Перекинул клиента на narod.ru. Если работать не будет — заходите сюда
Total votes 78: ↑72 and ↓6 +66
Comments 59

Настройка GUI в линуксе для мониторов с High DPI

Reading time 3 min
Views 36K
В последнее время появилось достаточно много мониторов с высоким разрешением, 150 dbi и выше, особенно в ноутбуках. И при этом всё выглядит жутко маленьким.
Причина этого — система думает что у Вашего монитора разрешение 96..100 dpi.
Решать это только увеличением размера шрифта неправильно, т.к. размеры всех остальных элеменов интерфейса остаются маленькими. Надо чтобы графическая оболочка сама это делала.

Мне с решением этой проблемы пришлось весьма долго рыться в интернете, собирая мелкие заметки, т.к. не оказалось места где бы это можно было увидеть всё вместе.

Ниже будет идти список где что поправить, все параметры привожу для своего монитора — 13,3" при 2560x1600, это даёт 226 dpi. Более высокое разрешение сейчас я видел только в ноутбуке Fujistu U904 — 262 dpi.
Читать дальше →
Total votes 38: ↑35 and ↓3 +32
Comments 59

Новый сервис от Payler — sms-платежи Billingrad

Reading time 1 min
Views 4.9K
image

Дорогие друзья,

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

Хотим представить вам новый сервис для sms-платежей — Billingrad. Сервис является самостоятельным продуктом, но полностью интегрирован с Payler. В будущем прием платежей по sms через Billingrad смогут осуществлять все пользователи Payler. В настоящий момент это дополнительная функция.

Читать дальше →
Total votes 1: ↑1 and ↓0 +1
Comments 3

Онлайн компилятор для ASP.Net MVC

Reading time 2 min
Views 14K
Мы давно уже не писали о новостях нашего проекта.
Вот список новых возможностей которые могут быть интересны .Net разработчикам:
  • Мы добавили полноценную поддержку F# (фидл)
  • Поддержка NuGet пакетов
  • Widget
  • Chrome Extension
  • Появилась возможность использовать полноценный ASP.Net MVC

И если с первым нововведением более менее понятно, то остальные могут быть более интересными
Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Comments 5

Гид по новогодним подаркам — 2013

Reading time 8 min
Views 61K
До нового года осталось всего пол-месяца, и если вы такой же тормоз задумчивый человек, как я — то самое время выбирать подарки. Мы в редакции Box Overview нашли, протестировали, и составили для вас список самых актуальных подарков в этом году.


Итак, посмотрим, чем же хабрапользователи будут заниматься на зимних каникулах? Когда 10 дней не надо идти на работу, а холодильник полон еды с новогоднего стола, нет лучшего развлечения, чем разобраться с новым гаджетом, вкусно пахнущим новой техникой.
Читать дальше →
Total votes 49: ↑37 and ↓12 +25
Comments 38

Латентно-семантический анализ и поиск на python

Reading time 7 min
Views 57K


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

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

Далее прошу под кат
Total votes 47: ↑46 and ↓1 +45
Comments 7

OAuth.io

Reading time 1 min
Views 17K
Доброго времени суток и с прошедшим Днем народного единства! Хочу рассказать об одном хорошем проекте — .


OAuth.io — это API (JavaScript, PhoneGap, iOS, Android, Flex) и сервис, который значительно упрощает взаимодействие более чем с 80-ю oAuth провайдерами (Facebook, Twitter, VK, GitHub, Dropbox, и др). Сервис работает по модели freemium: до 5000 соединений в месяц сервис бесплатный, при большем количестве вас ждут вполне демократичные цены. Стоит также сказать, что проект полностью открытый и вы сможете сами запустить у себя серверную часть «OAuth IO Daemon» (GitHub).

Как это работает на примере JavaScript
Total votes 46: ↑46 and ↓0 +46
Comments 10

Несколько интересностей и полезностей для веб-разработчика (выпуск 4)

Reading time 3 min
Views 41K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Pace.js — это самый простой способ (документация здесь) добавить к вашему проекту прогресс бар. Для Pace существует несколько тем, которые описываются только на CSS. От Hubspot есть еще два универсальных проекта на GitHub: Vex и Messenger — «Dialogs for the 21st century» и «Alerts for the 21st century» соответственно. Рекомендую.

imageFlat UI Free 2.1
Популярный информационный ресурс Designmodo опубликовал на GitHub обширный набор элементов интерфейса в стилей трендового плоского дизайна. Об этом еще в марте писал хабраюзер ilya42. А на этой недели проект обновился до версии 2.1. Теперь в Flat UI есть поддержка Bootstrap 3, появился ряд новых элементов, иконок, обновилились шрифты. Количество старов уже больше 5000.

Framer
Потрясающее изобретение разработчика Koen Bok. Framer — это бесплатный инструмент для прототипирования интерактивных и анимационных интерфейсов. Приложение синхронизируется с Photoshop, нарезает слои макета на .png (конечно же для верстки придется немного порезать руками, но все зависит от педантичности дизайнера к макету) и все верстает на z-index и trasnform matrix3d. А интерактив и анимацию дизайнеры добавят с помощью этого простого синтаксиса прямо в браузере (к сожалению только Chrome). PSD.Logo, PSD.OverviewButton — это имена PNG файлов. Говоря о разработчике Framer, хочется также упомянуть про его проект Cactus — генератор статистических сайтов на Python использующий Django template.
Читать дальше →
Total votes 74: ↑70 and ↓4 +66
Comments 15

База GeoIP – страны и города, сентябрь 2013

Reading time 2 min
Views 70K
Вышла в свет обновленная версия русскоязычной базы данных стран и городов.

База распространяется в двух модификациях: «Страны и города» (13Mb, после установки ~74Mb)  и «Только страны» (2Mb, после установки ~9Mb). Также в архивах находится небольшой пример использования базы данных на php.
Читать дальше →
Total votes 35: ↑31 and ↓4 +27
Comments 31

Загрузка файлов в AngularJS

Reading time 3 min
Views 59K
Давно писал модуль для загрузки файлов и всё он был не идеальным. И тут подумал, если сейчас не опубликую, то никогда не опубликую, идеал-то не достижим!

При составлении АПИ руководствовался принципом — как можно проще. Поэтому сначала несколько мыслей о загрузке файлов:

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

Загрузка каждого файла отдельным запросом. На любом хостинге существует ограничение на максимальный размер POST-запроса (напр., 10 МБ). Если мы грузим одновременно 10 файлов, значит их вес в сумме не должен превышать 10МБ. В 99% случаев проще пожертвовать производительностью и не иметь проблем с такими ограничениями.

Никаких отложенных загрузок. Файл должен загружаться сразу после добавления (не в 2000 году, чай, живем), поэтому никаких методов работы с очередью — выбрал файл, выбрал еще 5 штук, удалил один, нажал «отправить» — не будет. Зато будет отмена загрузки.

Не стоит разделять загрузку файлов по кнопке и перетаскиванием. В моем случае любая область, помеченная директивой позволяет перетаскивать на нее файлы, а если это инпут с типом file, то еще и в проводнике можно выбрать. Очень удобно знать, что на кнопку можно перетаскивать, когда потянул в браузер 10 файлов, а дизайнер забыл подсветить поле перетаскивания, и гадаешь перетащатся ли они или откроются в новом окне.
Читать дальше →
Total votes 44: ↑44 and ↓0 +44
Comments 29

Ungit — самый простой способ использовать Git

Reading time 1 min
Views 33K
Доброго времени суток уважаемые хабражители. Буквально только что увидел потрясающий проект на GitHub от FredrikNoren.



Ungit:


  • Чистый и интуитивно понятный интерфейс для Git (что есть невероятно круто для освоения Git)
  • Работает на любой платформе с установленными Node.js и самим Git
  • Веб-ориентированный. Возможность запускать его в облаке.
  • GitHub

Необходим Node.js версии 0.10 или выше и npm версии 1.3.1 или выше
Установка

npm install -g ungit

Я думаю, что после просмотра видео, моего более тщательного описания не потребуется. Спасибо всем за внимание.
Total votes 81: ↑69 and ↓12 +57
Comments 11

Абсолютное горизонтальное и вертикальное центрирование

Reading time 5 min
Views 310K
Сколько уже было сломано копий о задачу выравнивания элементов на странице. Предлагаю вашему вниманию перевод отличной статьи с решением этой проблемы от Стефана Шоу (Stephen Shaw) для Smashing Magazine — Absolute Horizontal And Vertical Centering In CSS.

Все мы знали о margin: 0 auto; для горизонтального центрирования, но margin: auto; не работало для вертикального. Это можно легко исправить, просто задав высоту и применив следующие стили:

.Absolute-Center {
  margin: auto;
  position: absolute;
  top: 0; left: 0; bottom: 0; right: 0;
}

Я не первый, кто предложил это решение, однако такой подход редко применяется при вертикальном выравнивании. В комментариях к статье How to Center Anything With CSS Simon ссылается на пример jsFiddle, где приводится отличное решение для вертикального центрирования. Вот еще несколько источников на эту тему.

Рассмотрим способ поближе.
Читать дальше →
Total votes 112: ↑106 and ↓6 +100
Comments 10

Договор на разработку сайта: так, а не иначе

Reading time 29 min
Views 152K
Присылает нам заказчик (Газпром) свою версию договора.
Понимаем — нашу они не подпишут,
вносим реквизиты и отправляем обратно.
Пропадают на две недели… возвращают протокол разногласий к договору.


Последняя неделя выдалась жаркой на переговоры с юристами заказчиков. Проекты я не веду, но так уж получилось, что все договора проходят через меня. Соответственно, я участвую в их согласовании.
Читать дальше →
Total votes 135: ↑129 and ↓6 +123
Comments 78

Распространенные заблуждения в управлении проектами

Reading time 6 min
Views 116K
Когда я работал программистом, ко мне нередко подходили с просьбой помочь сделать проект за долю. В некоторых я участвовал. Но очень мало проектов взлетело.
Со временем я стал менеджером проектов, а люди все так же подходят. И сами вокруг делают стартапы. Взлетают единицы.
Почему же?


Быстро разбогатеть и уплыть на собственный остров просто, увы, лишь в мечтах.

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

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

В этой статье я собрал одни из самых часто встречаемых мифов. И написал их опровержение, вкупе с реальными кейсами, как на самом деле нужно мыслить и действовать.
Читать дальше →
Total votes 101: ↑89 and ↓12 +77
Comments 44

Бесплатный курс из 11 лекций про маркетинг, продажи и клиентский сервис в веб-студии/агентстве

Reading time 2 min
Views 44K
Всем привет! В течение последних пяти лет я (Андрей Терехов) периодически писал на Хабре (и в общие блоги, и с недавних пор в блог проекта Ruward) различные материалы про маркетинг, продажи и клиентский сервис в веб-студиях и агентствах. Как правило, эти статьи получали положительный отклик от пользователей. Мы решили пойти дальше и составили самый полный курс из всех, которые я когда-либо читал (включая оффлайн), по данной тематике.

Мы записали более 8 часов видео, разбитых на 11 лекций, подготовили презентации, кейсы, материалы по теме, кучу разного рода примеров, образцов и шаблонов, которые могут пригодится в жизни веб-студии. Это все превратилось в большой спецпроект, который мы и анонсируем сегодня – www.megaplan.ru/digital.

Итак, какие темы вошли в наш курс из 11 лекций (заодно дам ссылки на мои материалы с хабра по этим же темам там, где они есть):

  1. Структура интернет-агентства. Принципы проектного управления. Треугольник sales-pm-account. (по мотивам http://habrahabr.ru/post/66033/)

  2. Ценообразование в веб-студии. Формирование расчетной сметы. Оправдание цены. Виды демпинга и способы борьбы с ним. (по мотивам http://habrahabr.ru/company/ruward/blog/169559/)

  3. Функции службы маркетинга, основные каналы привлечения клиентов. Работа по разным сегментам ЦА.

  4. Позиционирование — ищем ключевые точки. Собственный сайт студии/агентства — типовые ошибки. (по мотивам http://habrahabr.ru/post/121053/)


Читать дальше →
Total votes 53: ↑39 and ↓14 +25
Comments 14

Long Polling от А до Я своими руками

Reading time 5 min
Views 54K
Как реализовать long polling с помощью Nginx и Javascript в сети достаточно много материала. Но полного руководства я ещё не встречал. То возникают проблемы с компиляцией модуля под Nginx, то в браузере вертится иконка загрузки при long poll запросах. Под катом, полный материал как же все таки это сделать правильно.
Читать дальше →
Total votes 73: ↑69 and ↓4 +65
Comments 34
1

Information

Rating
Does not participate
Registered
Activity