Search
Write a publication
Pull to refresh
4
0
Сергей @sketcompani

User

Send message

Про Swift, и почему мои большие проекты будут на Objective-C еще какое-то (возможно долгое) время

Reading time4 min
Views41K
От переводчика: C пятницей, дорогие хабровчане! Хочу поделиться сегодня с вами переводом статьи из небольшого блога об опыте работы с языком Swift. Вряд ли она претендует на лавры серьезного и скрупулезного анализа, но, думаю, будет интересна всем, кто задумывался: «а не пора ли отправить на свалку истории этот Objective-C?».

Когда Apple представила нам Swift — это было круто! Наконец-то мы получили next-gen (т. е. модный-скриптоподобный) язык для разработки под яблочные девайсы (но без поддержки приватных членов класса, хм....). Теперь этот [языкДинозавр квадратноскобочный] может отправиться в музей, а мы начнем тыкать эти новые блестящие фичи языка. Безусловно, наивно предполагать, что язык, которому менее года, будет без тараканов. Очевидно, некоторое время нужно дать ему на избавление от детских болячек. Именно поэтому я не бросился переписывать все мои проекты на Swift сразу после анонса.


Заметили, что птица падает вниз?
Но ты-таки взялся за Swift, ведь так?

Коллтрекинг с оплатой за лид, а не за номера

Reading time3 min
Views9.8K
У многих компаний заметная часть продаж идёт через телефон: клиенты звонят с сайта, с рекламных объявлений, с оффлайн-каналов. Отследить, откуда пришел посетитель при онлайн-заказе, давно не проблема. Но в случае с продажей по телефону мы не видим, какая реклама привела его. Эту задачу решает коллтрекинг.
Читать дальше →

AllcountJS: Делаем простую CRM с веб-интерфейсом и REST API за 15 минут

Reading time5 min
Views29K
Допустим моя компания кому-то звонит и что-то продаёт и мне нужна простая CRM, которая позволит вести справочник контактов и наглядно отслеживать их состояние в плане продажи.

Сейчас мы с вами сделаем такую систему с нуля за считанные минуты. Для этого мы будем использовать фрэймворк Allcountjs.

Самые нетерпеливые могут сразу же посмотреть на результат.


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

Почему «ошибки это значения» в Go

Reading time4 min
Views15K
Недавно я перевёл великолепную статью Роба Пайка «Ошибки это значения», которая не получила должной оценки на Хабре. Что неудивительно, поскольку была размещена в официальном блоге Go и рассчитана на Go программистов. Впрочем, суть статьи не всегда сразу очевидна и опытным программистам. И всё же, я считаю её посыл ключевым для понимания подхода к обработке ошибок в Go, поэтому постараюсь объяснить его своими словами.

Я хорошо помню своё первое впечатление от прочтения этой статьи в момент её выхода. Это было примерно следующее: «Странный пример тут выбран — очевидно же, что с исключениями код будет лаконичней; выглядит как попытка оправдаться, что и без исключений можно как-то сократить». При том что я никогда не был фанатом исключений, пример, который рассматривается в статье, прямо напрашивался на это сравнение. Что хотел сказать Пайк фразой «ошибки это значения» было не очень ясно.

В то же время, я понимал, что упускаю нечто важное, поэтому дал себе немного времени, чтобы впитать прочитанное. И в какой-то момент, вернувшись к статье, понимание пришло само собой.
Читать дальше →

Генерация кода в Go

Reading time6 min
Views48K
Перевод статьи Роба Пайка из официального блога Go о автоматической кодогенерации с помощью go generate. Статья немного устарела (была написана перед выходом Go 1.4, в котором и появился go generate), но хорошо объясняет суть работы go generate.
Читать дальше →

Как писать Go код, который легко портируется

Reading time6 min
Views17K
(Перевод статьи с советами о написании по-настоящему кросс-платформенного кода в Go)
Go великолепно приспособлен для работы с разными платформами. Моя основная среда разработки на Windows, но я всегда работаю с Linux-системами. Поэтому я естественным образом пытаюсь избегать вещей, которые могут создать проблемы.



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

Недавно я помогал делать Windows-версию очень приятной программы для бекапов, так как хотел изучить альтернативы к zpaq, очень хорошему архиватору с журналированием и фокусом на сжатие. Во время портирования я отметил несколько вещей, которые могут быть полезны другим.
Читать дальше →

«Что нового в Swift 2?» на примерах. Часть 2

Reading time13 min
Views19K
В первой части мы рассмотрели лишь часть новых возможностей Swift 2:

  • фундаментальные конструкции языка, такие, как enums, scoping (область действия), синтаксис аргументов и т.д.
  • сопоставление с образцом (pattern matching)
  • управление ошибками (error handling)

Во второй части мы рассмотрим оставшиеся:

  • расширения (extensions) протокола
  • проверка доступности (availability checking)
  • взаимодействие с Objective-C и С

Я буду рассматривать новые возможности Swift 2, сопровождая их примерами, код которых находится на Github.
Читать дальше →

PostrgreSQL: ускоряемся через intarray

Reading time7 min
Views19K
Лет так 6 назад, когда слоник был только в 8.0, а я плотно сидел на MySql, часто слышал призывы сменить DB. Я помню как это было болезненно начать. Но после того, как решился, ни разу не жалел и на мускул уже вряд ли вернусь. Уж очень много тут плюсов, но пост не об этом.

Пришла задача: написать магазин, большой в перспективе. А-ля Фотос, Хотлайн. Ну и стандартная задача для таких площадок — это фильтр.
Читать дальше →

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

Reading time2 min
Views161K
Если вы решили попробовать замечательный язык Go, но не знаете с чего начать, вам прямая дорога в этот пост, где я постарался перечислить все необходимые для новичков ресурсы.
Читать дальше →

«Что нового в Swift 2?» на примерах

Reading time16 min
Views37K


Swift 2 сфокусировался на улучшении самого языка, взаимодействия с Objective-C и повышении производительности компилируемых приложений. Новые возможности Swift 2 представлены в 6 различных областях:

  • фундаментальные конструкции языка, такие, как enum , scoping (область действия), синтаксис аргументов и т.д.
  • сопоставление с образцом (pattern matching)
  • проверка доступности (availability checking)
  • расширения (extensions) протокола
  • управление ошибками (error handling)
  • взаимодействие с Objective-C

Я буду рассматривать новые возможности Swift 2, сопровождая их примерами, код которых находится на Github.
Читать дальше →

18 инсайтов топовых онлайн-предпринимателей

Reading time6 min
Views29K


Основатели Crazy Egg, KISSmetrics, Unbounce, Olark, Moz и Grasshopper делятся мыслями о том как работать с крупными клиентами, как определить истинную цену продукта, кто приносит проекту деньги, на какие вещи не стоит тратить время и силы и как все успевать.
Читать дальше →

Схема создания стартапов, позволяющая оценить вашу идею до того, как вы потратите $1. Шаги 1-3 из 6

Reading time5 min
Views6.8K
Если ваш стартап провалился, это все потому, что вы не смогли решить первостепенную проблему для достаточно широкой аудитории, поэтому я расскажу вам, как не совершить эту ошибку снова


Не так давно я объявил об открытии нашей новой студии стартапов, Capital H labs, в которой я и целая толпа талантливых инженеров и дизайнеров работаем над продуктами, способными помочь компаниям расти быстрее и более предсказуемо.
Свой первый продукт мы выпустим уже довольно скоро, и большую часть времени за последние 5 месяцев мы потратили на 1) оценку потребности в продукте и 2) создание продукта после оценки спроса.

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

Чеклист: Как загружать страницы быстрее

Reading time2 min
Views30K
Мы постоянно работаем над тем, чтобы IaaS был простым и понятным даже для тех, кто не сталкивался с ИТ-сферой. Для этого мы проводим оптимизацию всех систем и рассказываем о своем опыте в нашем блоге на Хабре.

Пара примеров:


Сегодня мы поговорим о том, как ускорить загрузку страниц, и взглянем на советы эксперта по Ruby Нейта Беркопеца (Nate Berkopec).

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

JavaScript и Nginx = nginScript, а HTTP2 в придачу

Reading time6 min
Views40K

Дело было вечером, делать было нечего, но голова рукам покоя не давала и хотелось чего-то для души… А для души захотелось чего-то новенького, эдакого необычного.

Я, как и многие из хабровчан, люблю новинки. Релиз нового софта — это как праздник. Новые фичи, новые возможности… Новые способы забивать гвозди и кататься на велосипедах. Новые велосипеды… В общем можно придумать кучу аллегорий и метафор. А про что это я? Ах да, про Nginx, HTTP2 и JavaScript. Чем они связаны, спросите вы? А тем, что в последней версии Nginx (1.9.5) добавили много интересных плюшек, а именно:

  • добавили протокол HTTP2 и удалили модуль SPDY (нафиг старое барахло)
  • интегрировали прямо в nginx модуль ngx_http_js_module и создали свой диалект JavaScript

Го под кат, расскажу детали.
Читать дальше →

Разработка менеджера закачек на GO

Reading time8 min
Views30K
Менеджер многопоточных закачек на GO.

http://loafter.github.io/godownloader/
https://github.com/Loafter/godownloader


Вступление


Давным-давно, в году этак 1998, для выхода в интернет я использовал модем на работе у отца. Он его включал вечером после работы и я мог наслаждаться просторами сети интернет на скорости аж 31.2 кбит/c. В то время не было истеричных блогеров, страницы не весили по мегабайту, а в новостных сайтах говорили только правду. Естественно основной интерес представляли ресурсы. Картинки, программы, всякие дополнения к играм, вроде машинок. Как сейчас помню качать через IE было сущим адом. Скачать файл весом больше 500 кб было просто невозможно, древний осел был намного упрямей.
Читать дальше →

19 советов по повседневной работе с Git

Reading time14 min
Views289K


Если вы регулярно используете Git, то вам могут быть полезны практические советы из этой статьи. Если вы в этом пока новичок, то для начала вам лучше ознакомиться с Git Cheat Sheet. Скажем так, данная статья предназначена для тех, у кого есть опыт использования Git от трёх месяцев. Осторожно: траффик, большие картинки!

Содержание:
  1. Параметры для удобного просмотра лога
  2. Вывод актуальных изменений в файл
  3. Просмотр изменений в определённых строках файла
  4. Просмотр ещё не влитых в родительскую ветку изменений
  5. Извлечение файла из другой ветки
  6. Пара слов о ребейзе
  7. Сохранение структуры ветки после локального мержа
  8. Исправление последнего коммита вместо создания нового
  9. Три состояния в Git и переключение между ними
  10. Мягкая отмена коммитов
  11. Просмотр диффов для всего проекта (а не по одному файлу за раз) с помощью сторонних инструментов
  12. Игнорирование пробелов
  13. Добавление определённых изменений из файла
  14. Поиск и удаление старых веток
  15. Откладывание изменений определённых файлов
  16. Хорошие примечания к коммиту
  17. Автодополнения команд Git
  18. Создание алиасов для часто используемых команд
  19. Быстрый поиск плохого коммита

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

Начинаем любить Go

Reading time5 min
Views27K
Если что, это вольный перевод статьи из блога Jeremy Mikkola.

Эта статья о том, как некоторое время спустя я распробовал и таки полюбил язык Go (аки golang).

Жалобы

Еще год назад у меня было полно жалоб на тот или иной аспект Go. В основном я жаловался на то, что при том, что ты не можешь использовать Go как «настоящий системный язык» (в плане написать-на-нем-операционку), тебе все равно приходится думать о том, о чем обычно приходится думать в системных языках: например, использовать тут указатель или нет. Система типов лежит в непродуктивном ущелье между достаточной строгостью, чтобы стать «автоматичной» (привет адептам Haskell!) и достаточной динамичностью, чтобы не отвлекать (как в Python). Какое-то время я тупил на таких вещах, как проход по юникодовой строке не символами, а байтами, и всякое такое. Я обвинял Go в том, что он так-то не всегда следует своему принципу простоты, так как в нем есть много разных узких штук, вроде make(). И конечно же я жаловался на то, что при работе с Go постоянно приходится повторять блоки if err != nil { return err }.

Поначалу я точно не мог назвать себя фанатом Go.

В техническом плане я согласен с тем, что большинство моих жалоб корректны. Я согласен с тем, что систему типов можно было бы придумать и покруче, а от указателей не помешало бы немного абстрагироваться. Но как только я начинаю понимать, что (не все, но многие) проблемы, на которые я жаловался, на самом деле вроде как даже и не непрягают. В действительности это напоминало нытье на целый лес, из-за пары некрасивых деревьев. В повседневном использовании языка большинство вещей, о которых я так волновался, вообще не давали о себе знать. Я ни разу не встречал баг, так или иначе связанный с проходом по строке. В реальном коде ты почти не кастишь interface{} так часто, как хотелось бы тем ребятам, которые дрочат на системы типов. Ах да, нет беды в том, чтобы вызывать make() в одном месте и new() в другом. Больше всего я ругался на те архитектурные решения языка, которые усложняли создание абстракций. Ты не можешь просто так сделать структуру данных, которая станет альтернативой к встроенным структурам данных (привет кодогенерации!). Без обобщений ты не сможешь строить большие обобщенные абстракции. Скорее всего, это сделано намеренно.
Читать дальше →

Развертывание JetBrains Hub + Youtrack + Upsource + Nginx на своем сервере Debian 8

Reading time4 min
Views23K
Несколько дней назад столкнулся с задачей развернуть систему управления разработкой, которую предлагает JetBrains, а именно установить Hub, Youtrack и Upsource при этом обеспечить доступ к ресурсам по удобным для всех url.

Почитав про продукты и их установку на сервере из zip архивов, решил поделиться опытом и готовым решением (скриптом) для автоматического развертывания с вами.

hub+youtrack+upsource

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

Подробности

Миллиарды запросов в день встречают Go 1.5

Reading time3 min
Views26K
Перевод статьи о том, как компания перевела свою инфраструктуру на Go 1.5 и уменьшила паузы сборщика мусора с ~279мс до ~10мс.

Маркетинг системы, ориентированные на клиентов, зависят от сбора и анализа как можно большего количества связанных событий. Клиенты буквально везде, и количество данных растет экспоненциально. Язык Go играет важную роль в нашей системе сбора данных. Сегодня FLXone обрабатывает 3+ миллиарда запросов в день написанным с нуля нашим приложением.
Читать дальше →

Инвесторы и стартапы, мысли вслух. Опыт Flowwow

Reading time3 min
Views4.8K
Инвесторы и стартапы, полезные мысли, опыт Flowwow.

Еду в поезде Минск — Брест, в вагоне играет песня «Ах какая женщина…» и тут мне пришла в голову мысль написать небольшую заметку об инвесторах и нашей работе с ними.
Тема для меня относительно не новая, потому что я достаточно часто взаимодействую с инвесторами и уже успел накопить небольшой опыт работы с ними и поэтому хочу поделиться с вами.
Инвесторы делятся на несколько типов:
— бизнес-ангелы
— фонды
— что-то среднее между фондом и бизнес-ангелом
Фонды можно разделить на «окологосударственные» и частные, есть крупные фонды, есть мелкие. Бизнес-ангелов можно разделить на несколько типов:
— профессиональные бизнес-ангелы (в России их по пальцам пересчитать)
— непрофессиональные бизнес-ангелы, это просто люди с рынка, у которых есть деньги, которые они решаются использовать как-то более интересно, чем обесценивать в банках.
Читать дальше →

Information

Rating
Does not participate
Location
Воронеж, Воронежская обл., Россия
Date of birth
Registered
Activity