Как стать автором
Обновить
2
0
Алексей @gtbear

Пользователь

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

Десять возможностей C++11, которые должен использовать каждый C++ разработчик

Время на прочтение12 мин
Количество просмотров537K
В данной статье рассматривается ряд возможностей С++11, которые все разработчики должны знать и использовать. Существует много новых дополнений к языку и стандартной библиотеке, эта статья лишь поверхностно охватывает часть из них. Однако, я полагаю, что некоторые из этих новых функций должны стать обыденными для всех разработчиков С++. Подобных статей наверное существует много, в этой я предприму попытку составить список возможностей, которые должны войти в повседневное использование.

Сегодня в программе:
  • auto
  • nullptr
  • range-based циклы
  • override и final
  • строго-типизированный enum
  • интеллектуальные указатели
  • лямбды
  • non-member begin() и end()
  • static_assert и классы свойств
  • семантика перемещения
Читать дальше →
Всего голосов 133: ↑125 и ↓8+117
Комментарии115

Заметки для игры в бизнес

Время на прочтение11 мин
Количество просмотров72K
Бизнес – это игра или нет? Я думаю да. А у любой игры должны быть правила.

Привет Хабр, меня зовут Александр. Сегодня я хотел бы поделиться с вами о том, как надо или не надо вести бизнес в сфере IT. Данные заметки я извлек из собственного опыта. Я не буду писать здесь книжными и в тоже время, зачастую, пустыми и скучными фразами. Здесь будет только то, что я почерпнул для себя работая на поприще самостоятельной работы, то есть не на дядю. Вся статья будет поделена на части. Во всех частях кроме первой, материал будет изложен в виде заметок, после каждой заметки я буду приводить пример из моей работы, чтобы не быть голословным. Поехали!
Читать дальше →
Всего голосов 154: ↑140 и ↓14+126
Комментарии63

Десятикратная разборчивость

Время на прочтение8 мин
Количество просмотров41K
Каждый знает, что бывают «десятикратные» программисты, которые в 10 раз более производительны, чем программист обыкновенный. Мы не можем измерить производительность, поэтому и не знаем, правда ли это. Но на самом деле людей необыкновенно производительных существует немало, достаточно, чтобы доказать существование «десятикратного программиста».

Как же они этого добиваются?

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

Читать дальше →
Всего голосов 104: ↑95 и ↓9+86
Комментарии36

PHP: фрактал плохого дизайна

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

Предисловие


Я капризный. Я жалуюсь о многих вещах. Многое в мире технологий мне не нравится и это предсказуемо: программирование — шумная молодая дисциплина, и никто из нас не имеет ни малейшего представления, что он делает. Учитывая закон Старджона, у нас достаточно вещей для постижения на всю жизнь.

Тут другое дело. PHP не просто неудобен в использовании, плохо мне подходит, субоптимален или не соответствует моим религиозным убеждениям. Я могу рассказать вам много хороших вещей о языках, которых я стараюсь избегать, и много плохих вещей о языках, которые мне нравятся. Вперёд, спрашивайте! Получаются интересные обсуждения.

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

PHP — препятствие, отрава моего ремесла. Я схожу с ума от того, насколько он сломан и насколько воспеваем каждым уполномоченным любителем нежелающим научиться чему-либо ещё. У него ничтожно мало оправдывающих положительных качеств и я бы хотел забыть, что он вообще существует.
Читать дальше →
Всего голосов 450: ↑392 и ↓58+334
Комментарии539

Как сделать самую лучшую посадочную страницу: чеклист из 50 пунктов

Время на прочтение5 мин
Количество просмотров98K
Мы в Alconost предоставляем услуги создания и ведения контекстной рекламы и, по долгу службы, иногда занимаемся разработкой посадочных страниц (landing pages). Мы были очень рады найти и перевести статью, в которой автор изложил все требования, которым такая страница должна соответствовать. Но есть в этой статье и большой минус. Пунктов аж 50, каждый можно отметить в чеклисте, но после доступен лишь результат в баллах, которым можно разве что похвастаться перед друзьями.

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

Те, кому в гуглотаблицу не хочется, просим под кат. Там перевод.



Читать дальше →
Всего голосов 84: ↑68 и ↓16+52
Комментарии30

Несколько подробностей об std::string

Время на прочтение10 мин
Количество просмотров76K
Недавно заинтересовался реализацией std::string в libstdc++. Не в связи с принятием нового стандарта, а чтобы разобраться. Благо требования к строковму типу почти не изменились.

Основным средством для анализа кода несомненно является метод пристального вглядывания, но чтобы сузить область вглядывывания и сделать процедуру более захватывающей можно реализовать для строки идиому «трассер» подсмотренную в «C++ Templates: The Complete Guide». Трассировка позволяет выявлять подозрительные интересные операции над строками.

Как известно, std::string это псевдоним для
std::basic_string<char>
и нам ничего не мешает определить
std::basic_string<X>
. В X можно определить несколько статических счетчиков и итерировать их в конструкторе, деструкторе и остальных методах. Выполняя разные операции над такой строкой можно будет проследить эффективность применяемых алгоритмов в терминах количества операций.
Кроме того, в g++ для
std::string a(«entrails»); 
выражение
std::cout << reinterpret_cast<char*>(*((void**)(&a))); 

выведет содержимое строки. Т.е. std::string — является, по сути, указателем на char.
Вобщем, эти и другие шокирующие поднобности под катом.
Читать дальше →
Всего голосов 51: ↑42 и ↓9+33
Комментарии23

Особенности логического сравнения в PHP

Время на прочтение14 мин
Количество просмотров12K
Четвертого апреля на stackoverflow появился вопрос, касающийся работы операторов сравнения в PHP. Почти сразу же на него поступил развернутый ответ. Наверняка для многих это является интересной темой.

Вопрос


PHP славится своим приведением типов. Я потратил много времени в поисках основ логики сравнения в нем.

Например: если $a > $b является истиной и $b > $c является истиной, значит ли это, что $a > $c также является истиной?

Руководствуясь простейшей логикой я могу предположить что это выражение также верно, однако я не очень доверяю PHP в этом в вопросе. Может кто-нибудь привести мне пример, в котором данное утверждение будет ложным?
Читать дальше →
Всего голосов 62: ↑47 и ↓15+32
Комментарии17

RESTful API для сервера – делаем правильно (Часть 2)

Время на прочтение9 мин
Количество просмотров86K
В первой части статьи я кратко описал принципы RESTful и объяснил каким образом следует проектировать архитектуру вашего сервера так, чтобы можно было легко выпускать новые и прекращать поддержку устаревших версий вашего API. В этой части я кратко расскажу о HATEOAS и Hypermedia, а затем расскажу о роли, которую они могут сыграть при разработке нативных приложений для мобильных устройств. Но главной темой этой статьи будет реализация кэширования (точнее поддержка кэширования на стороне сервера). Целевая аудитория включает разработчиков серверного ПО и, в какой то мере, разработчиков под iOS или под другие мобильные платформы.

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

RESTful API для сервера – делаем правильно (Часть 1)

Время на прочтение13 мин
Количество просмотров333K
В 2007-м Стив Джобс представил iPhone, который произвел революцию в высокотехнологичной индустрии и изменил наш подход к работе и ведению бизнеса. Сейчас 2012-й и все больше и больше сайтов предлагают нативные iOS и Android клиенты для своих сервисов. Между тем не все стартапы обладают финансами для разработки приложений в дополнение к основному продукту. Для увеличения популярности своего продукта эти компании предлагают открытые API, которыми могут воспользоваться сторонние разработчики. Пожалуй Twitter был первым в этой сфере и теперь число компаний, последовавших этой стратегии, растет стремительно. Это действительно отличный способ создать привлекательную экосистему вокруг своего продукта.

Читать дальше →
Всего голосов 73: ↑70 и ↓3+67
Комментарии57

Мой опыт продаж в App Store. $29K за 15 месяцев

Время на прочтение3 мин
Количество просмотров154K
Хочу поделиться опытом разработки и продаж своего iOS-приложения из категории «Производительность» (Productivity). О приложении рассказывать не буду, чтобы не сочли за рекламу. Просто графики и выводы, которые я сделал.



Читать дальше →
Всего голосов 140: ↑131 и ↓9+122
Комментарии86

Десять вещей, которые я терпеть не могу в ООП

Время на прочтение8 мин
Количество просмотров110K
Боже, временами я просто ненавижу объектно-ориентированное программирование.

Наверное, я не один такой. Бессмертные слова Эдсгера Дейкстры гласят:
«Объектно-ориентрованное программирование — это исключительно плохая идея, которую могли придумать только в Калифорнии.”

Обычно я не жалуюсь, но сейчас, думаю, самое время оглянуться назад и посмотреть, что же не так с ООП. В таком духе я и подготовил скромный список десяти вещей, которые я терпеть не могу в ООП.
Огласите весь список, пожалуйста
Всего голосов 203: ↑118 и ↓85+33
Комментарии253

Настраиваем IPSec VPN сервер через strongSwan и On-Demand на iOS

Время на прочтение3 мин
Количество просмотров34K
Как же меня достало это сообщение

Всё началось с того что возникла необходимость защитить передаваемые на сервер пользовательские данные. И сделать нужно было так, что бы не заморочивать при этом пользователей корпоративных iPad'ов. Я не смог придумать ничего умнее как использовать IPSexc и VPN On-Demand на iOS. И поднимать я его решил через strongSwan.

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

Ступить на тернистый путь
Всего голосов 16: ↑13 и ↓3+10
Комментарии6

Хватит неправильно использовать выпадающие списки

Время на прочтение4 мин
Количество просмотров133K
Формы состоят из самых разных элементов интерфейса. Если вы не знаете, как правильно с ними обращаться, вы можете сильно усложнить заполнение форм. Чаще всего ошибаются, применяя выпадающие списки (select menu).

Когда использовать


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



Читать дальше →
Всего голосов 135: ↑128 и ↓7+121
Комментарии103

Настраиваем VPN для андроида

Время на прочтение4 мин
Количество просмотров578K
Здесь я попробую рассказать о настройке VPN на андроид устройствах.
Многие пользователи никогда не слышали о VPN, а когда видели этот пункт в настройках телефона, то просто пожимали плечами и проходили дальше. Если вы знаете что такое VPN, как он работает, то скорее всего эта статья не расскажет вам ничего нового, я писал её для новичков, которые хотят защитить свою безопасность в сети, обойти цензуру и региональные запреты, сохранить свою анонимность.
Итак, что же такое VPN?
VPN — (англ. Virtual Private Network — виртуальная частная сеть) — обобщённое название технологий, позволяющих обеспечить одно или несколько сетевых соединений (логическую сеть) поверх другой сети (например, Интернет).
PPTP VPN — PPTP (англ. Point-to-point tunneling protocol) — туннельный протокол типа точка-точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой, сети. PPTP помещает (инкапсулирует) кадры PPP в IP-пакеты для передачи по глобальной IP-сети, например Интернет. PPTP может также использоваться для организации туннеля между двумя локальными сетями. РРТР использует дополнительное TCP-соединение для обслуживания туннеля. PPTP-трафик может быть зашифрован с помощью MPPE. Для аутентификации клиентов могут использоваться различные механизмы, наиболее безопасные из них — MSCHAP-v2 и EAP-TLS.
Моей задачей в этой статье не является подробный рассказ о VPN (что это такое, как работает, откуда появилось) информацию вы сами можете взять здесь: ru.wikipedia.org/wiki/VPN
Переходим сразу к настройкам телефона, я всё проделывал на своём Samsung Galaxy GT N-7100 Galaxy Note2, прошивка MIUI, андроид 4.1.1 настройки на других устройствах схожи.
Читать дальше →
Всего голосов 35: ↑15 и ↓20-5
Комментарии11

Тонкие моменты в договоре на разработку сайта

Время на прочтение7 мин
Количество просмотров100K
Привет, хабр! Продолжаю свой цикл материалов про маркетинг, продажи и клиентский сервис веб-студий и агентств. Сегодня хочу рассмотреть такую локальную тему, как заключение договора на создание сайта, и поговорить про его тонкие места.

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

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

Итак, я подготовил некий список неочевидных моментов, с которыми мне неоднократно приходилось сталкиваться на практике. Начнем:

Установка копирайта и публикация в портфолио


Очень часто при общении с заказчиком при запуске нового проекта конфликтным моментом становится размещение «марки» студии на сайте («Сделано в XXX » и пр.). Если данный момент никак не обозначен в договоре, то убедить заказчика прислушаться к вашим доводам бывает сложно. Часто проблемы возникают в самый последний момент, даже если изначально лейбл присутствовал и на макетах, и на тестовой зоне: «Ой, а мы не думали, что так и пойдет на основную версию сайта». Итак, что рекомендуется сделать:
Читать дальше →
Всего голосов 101: ↑95 и ↓6+89
Комментарии57

История одного Crash-а, и NSLog'а его лечившего

Время на прочтение11 мин
Количество просмотров30K
Лечу Crash'и NSLog'ами. Недорого. Многолетний опыт. 100% гарантия.

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

Все началось с того, что на одном из относительно больших проектов начало стабильно вываливаться исключение при авторизации пользователя. «Ну и что тут такого? У всех бывает. Проверку на nil забыли поставить или где-то накосячили. „Тоже, мне, большое событие — crash на проекте“, — подумает большая часть программистов. В принципе — абсолютно согласен. Crash — не такое уж и редкое явление в программировании под iPhone, и с ним сталкиваешься по десять раз на день. Но этот был особенным. От него уже начало попахивать „магией“, когда мне сказали про его некоторые параметры и особенности:

  • Воспроизводимость на симуляторе: 100%
  • Воспроизводимость на устройстве: 0%
  • Путь к крэшу (после локализации крэша): ~ 40 секунд
  • Настройки оптимизации при компиляции (-O1,-O2...) не влияют на воспроизводимость
  • XIB'ы в проекте не используются


Да выглядел он довольно безобидно:

// Code
UITextView * textView = [ [UITextView alloc] initWithFrame:CGRectMake(0, 150, _width, _height)];

// Exception
*** Terminating app due to uncaught exception 'CALayerInvalidGeometry', 
    reason: 'CALayer bounds contains NaN: [0 0; nan 200]'


»Ну тут же и ежу понятно, что width — после вычисления — NaN!", — подумал я. Бегло поглядев где и как вычисляется ширина вьюхи, и не найдя ничего особого опасного, я, для утверждения своей догадки, поставил перед созданием вьюхи NSLog. А вдобавок, и точку останова на строке с созданием элемента.
// Source:
NSLog(@"width = %f", _width);

//Output:
width = 200


«Гм», — подумал про себя я, и продолжил выполнение программы после точки останова. И крэша не произошло…

Что было дальше? Читайте во второй части сразу под катом...
Всего голосов 162: ↑157 и ↓5+152
Комментарии50

У Bitcoin появился официальный банк

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


Один из старейших обменников электронной валюты Bitcoin Bitcoin-Central.net получил лицензию на банковскую деятельность.
Читать дальше →
Всего голосов 84: ↑76 и ↓8+68
Комментарии264

Самый простой способ использования Hulu, Pandora и т.д. безо всяких VPN

Время на прочтение2 мин
Количество просмотров78K
UPD:
Ребята, взамен помершего Tunlr мы подняли свой DNS Proxy для Pandora и Spotify. Работает, понянтно, на всех платформарх и практически не требует настройки — habrahabr.ru/post/215889/. Велкам!


Если вам, как мне, надоело подключать VPN-туннель на штаты каждый раз, когда вы хотели бы послушать знающее ваши музыкальные вкусы радио Pandora или увидеть видео по ссылке на hulu.com, вам помогут два волшебных адреса (проверьте на сайте, они периодически меняются):

142.54.177.158


209.141.56.79


Это адреса DNS-сервера сайта tunlr.net который проделывает хитрую магию с заголовками помогает вам избежать проверки на страну пребывания для вашего IP.

Сервис поддерживает только определенный список сайтов, для которых это будет работать. В случае всех остальных запросов он будет работать как обычный честный DNS-сервер.
Читать дальше →
Всего голосов 50: ↑46 и ↓4+42
Комментарии59

Как стать миллионером в AppStore или немного формул про продвижение и продажи. Часть 1

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

Схема успеха



Джон, мы потеряли два листа математических выкладок! Что делать?
Как обычно, Билл… напиши: «отсюда с очевидностью следует…»


image

Чтобы прочитать некраткую сопроводительную записку к схеме – добро пожаловать под кат.

Читать дальше →
Всего голосов 130: ↑119 и ↓11+108
Комментарии35

Большая подборка уроков по созданию CSS-кнопок

Время на прочтение2 мин
Количество просмотров83K
В этой подборке представлены уроки с наглядными примерами по созданию CSS-кнопок на любой вкус.

Fancy 3D Button with CSS3 [Демо | Подробности]


Читать дальше →
Всего голосов 99: ↑84 и ↓15+69
Комментарии28

Информация

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