Pull to refresh
5
0
Send message

Ликбез по типизации в языках программирования

Reading time12 min
Views533K
image

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

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

Git Rebase: руководство по использованию

Reading time8 min
Views856K
Rebase — один из двух способов объединить изменения, сделанные в одной ветке, с другой веткой. Начинающие и даже опытные пользователи git иногда испытывают нежелание пользоваться ей, так как не видят смысла осваивать еще один способ объединять изменения, когда уже и так прекрасно владеют операцией merge. В этой статье я бы хотел подробно разобрать теорию и практику использования rebase.

Теория


Итак, освежим теоретические знания о том, что же такое rebase. Для начала вкратце — у вас есть две ветки — master и feature, обе локальные, feature была создана от master в состоянии A и содержит в себе коммиты C, D и E. В ветку master после отделения от нее ветки feature был сделан 1 коммит B.


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

Мой первый клиент мертв

Reading time5 min
Views122K
Примечание редактора: Джеймс Альтухер — инвестор, программист, автор и предприниматель. Он инвестировал в 25 стартапов и написал 10 книг. Последними вышли книги «Я был слеп, но сейчас прозрел» и «40 альтернатив колледжу».


Я был одинок и хотел денег. Я жил в однокомнатном номере в Астории, район Куинс Нью-Йорка в 1995-м и не знал никого в округе. Я писал свой номер телефона на двухдолларовых купюрах, которые оставлял на чай официанткам, но ни одна мне не звонила. В Астории жили одни греки, а те предпочитали свою тусовку. Никто не заговаривал со мной. Я мог наворачивать мили по Астории в надежде найти собеседника.

Выходные были хуже всего. Я скучал по друзьям на работе. Музей кинематографии находился совсем рядом, и я ходил туда посмотреть всякие инди-фильмы. Помню две вещи: ретроспектива Хэла Хартли была великолепна, а коллекция свитеров Билла Косби, которые тот носил на своих шоу 80-х, выставлялась на заметном месте. Женщина-билетер не любила меня, так как я всегда заходил бесплатно по карточке работника HBO.



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

Адаптивные колонки

Reading time2 min
Views32K
При создании колонок обычно приходится применять специальные CSS-классы к первому и последнему элементу. В этой статье рассказано о небольшом трюке, который упрощает верстку колонок, а также делает их адаптивными.

Суть метода сводится к использованию псевдокласса nth-of-type: количество и ширина колонок меняется на экранах разных размеров (Демонстрация).

Недостатки использования классов для первого и последнего элементов


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

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

Псевдо веб сокеты

Reading time8 min
Views12K
     Вдохновившись вот этой статьёй о Socket-соединениях в Веб-приложениях, решил сделать более-менее универсальный модуль с удобным интерфейсом, реализующий эту технологию.
     В этой статье под словом «сокет» имеется ввиду програмный интерфейс, который обеспечивает обмен данными между серверным и клиентским скриптами, с возможностью клиентского постоянно «слушать порт». Другими словами, как только что-то произошло на сервере, он может тут же сообщить об этом клиенту, и наоборот. Конечно же, в javascript нет возможности «слушать порты» и создавать полноценные сокеты, но зато у нас есть спички, изолента и пластилин, из которых можно смастерить какое-то подобие.
     Сначала я опишу примерный принцип действия этой системы, а затем, по традиции, приведу код примитивного чата построенного на её основе, с, конечно же, ссылкой. Хотелось бы увидеть своими глазами хабраэффект в действии. Ещё в конце будет ссылка на репозиторий с исходниками.

читать дальше

Gamma Gallery — отличная адаптивная галерея

Reading time3 min
Views62K
Создание фотогалереи для адаптивного дизайна — не самая простая задача. Следует учитывать отображение на экранах различной ширины, при этом не загружая слишком много графики на мобильных устройствах. Хорошее решение — Gamma Gallery, выглядит очень круто.



Демонстрация | Исходники
Читать дальше →

Веб-сервер за рубежом + статика в России = ускорение скорости загрузки страницы

Reading time3 min
Views17K
Самый частый вопрос при выборе зарубежного хостера (на примере Hetzner): «Не будет ли сайт тормозить»? Несмотря на то, что ping к Hetzner из России достаточно мал, статика (особенно тяжелая или если ее много) с серверов, размещенных в России, отдается быстрее.

Есть несколько вариантов увеличения скорости оставаясь в Hetzner:

1. Использование российских CDN-сервисов.
2. Проксирование/кэширования статики через сервер/vps, размещенный в России.

Я расскажу, как технически реализовать проксирование/кэширование статики с помощью nginx через сервер, размещенный в России.

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

Делаем превью сайтов в стиле Yandex Браузера

Reading time5 min
Views24K
yandex browserПрошло уже почти два месяца как Yandex порадовал некоторых пользователей новым продуктом — Yandex Браузером. Несмотря на невероятную динамику развития продуктов в этой области (Chrome и Firefox), Яндексу удалось привнести в свой браузер ряд новых идей.

Из всех особенностей этого браузера больше всего меня зацепило их дизайнерское решение относительно изображений сайтов в «быстрых закладках» (Speed dial). Люди любят глазами и поэтому приятно видеть у себя в новом табе не пустую белую страницу, а красочные картинки. Беда только в том, что лично я, чаще всего, смотрю на подпись под этой картинкой или же на favicon, так как по скриншоту сайта бывает очень сложно его узнать. Эту проблему дизайнеры яндекса, на мой взгляд, решили очень элегантно. В данном посте мы посмотрим, как реализовать эту идею на клиентской стороне.

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

Производительность веб-шрифтов

Reading time3 min
Views42K


Применение веб-шрифтов становится все популярнее: согласно HTTP Archive, за последний год число сайтов, использующих дополнительные шрифты, выросло вдвое — с 6 до 12%.

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

Open Source-расширения для yii от команд 2ГИС

Reading time3 min
Views19K
В прошлый раз мы рассказали о слоистой архитектуре во фреймворке yii, а сейчас хотим поделиться кодом.

В своей работе мы активно используем open source-решения и поэтому решили поделиться собственными разработками, которые могут быть полезны сообществу. Сегодня это расширения для, наверное, лучшего в мире PHP-фреймворка yii:
  • DGSphinxSearch
  • AMQP(RabbitMQ)
  • MQLogRouter
  • DGPinbaLogRoute
  • DGApiClient
Рассмотрим эти расширения по порядку.

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

Mysql PARTITION BY YEAR(date) / MONTH(date) / DAYOFWEEK(date)

Reading time4 min
Views35K
Зачастую мне приходится иметь дело с таблицами которые содержат редко или даже никогда ни обновляемые данные. Хорошим примером таких данных являются различные логи. Некоторые таблицы регулярно очищаются от устаревших данных, а в некоторых приходится хранить записи «вечно». Поэтому такие таблицы «пухнут» и работа с ними становится тяжелой операцией для всей системы.

Чтобы уменьшить нагрузку на диск и ФС, придумали partitioning, по простому — секционирование. Файл с данными таблицы разрезается по какому-то условию на несколько не больших файлов — партиций. Для случая с логами разумно партиционировать таблицы по полю, содержащему даты события. Часто бывает разумно резать таблицу на partition по году по месяцу или по дням месяца/недели.

Что-то подсказывает что резать придется по полю timestamp.
Читать дальше →

Тюнинг MySQL — thread_cache_size

Reading time1 min
Views59K
Параметр thread_cache_size играет немаловажную роль в производительности нагруженного MySQL-сервера. В некоторых случаях можно увеличить производительность на 30-50%.

Этот параметр указывает количество тредов, уходящих в кеш при отключении клиента. При новом подключении тред используется из кеша, что позволяет экономить ресурсы при больших нагрузках.
Читать дальше →

16 инструментов для создания прототипов

Reading time5 min
Views496K


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

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

16 инструментов со ссылками и их краткое описание

Ratchet — быстрое прототипирование мобильных приложений на HTML, CSS и JS

Reading time1 min
Views24K


Ratchet — новый фреймворк, который позволяет быстро создавать прототипы приложений для iOS. По сути является аналогом Twitter Bootstrap для мобильных устройств.

Сайт проекта | Ratchet на GitHub | Обсуждения в Google Groups | Twitter
Читать дальше →

MySQL Query Killer — предохранитель от перегрузки СУБД

Reading time4 min
Views10K
Здесь описывается процедура, предназначенная для предохранения базы данных высоконагруженной системы от перегрузки.

После того, как ваши запросы оптимизированы, по идее у вас не должно возникать ситуаций, когда
1. Один запрос блокирует другие
2. Какие-то запросы блокируют друг друга
Мы стремимся к тому, чтобы таких ситуаций не возникало.

Потому хорошим «сторожем работоспособности» будет умный «Query killer»,
который будет отслеживать подозрительные ситуации и освобождать базу данных.

Этот киллер допускает ситуацию, когда БД выполняет пару тяжелых запросов.
Но когда он видит, что начинает появляться много долгих запросов — то начинает принмать меры
Читать дальше →

Как узнать, стоит ли оптимизировать MySQL запросы?

Reading time4 min
Views25K
Мне часто задают один и тот же вопрос: как можно находить запросы, которые необходимо оптимизировать. Ведь, скажем, взглянув на отчет pt-query-digest, мы легко найдем медленные запросы или запросы, которые вызывают большую нагрузку на систему — но как мы поймем, существует или нет возможность сделать выполнение этого запроса быстрее? Полный ответ на этот вопрос определенно потребует комплексного анализа, так как существует много путей оптимизации запросов. Однако, существует одна очень полезная метрика, которую вы можете применить — соотношение между количество возвращенных запросом рядов и пройденными рядами.
Читать дальше →

Оптимизация сложных запросов MySQL

Reading time5 min
Views70K

Введение


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

Прежде всего хотелось бы ограничить круг рассматриваемых проблем оптимизации «широкими» и большими таблицами. Скажем до 10m записей и размером до 20Gb, с большим количеством изменяемых запросов к ним. Если в вашей в таблице много миллионов записей, каждая размером по 100 байт, и пять несложных возможных запросов к ней — это статья не для Вас. NB: Рассматривается движок MySQL innodb/percona — в дальнейшем просто MySQL.
Читать дальше →

Pictonic — необычный иконочный шрифт

Reading time1 min
Views30K

В последнее время появилось множество иконочных шрифтов для нужд веб-дизайнеров, но такой как Pictonic я вижу впервые. Это «логотипный» иконочный шрифт, где собрано более 220 логотипов известных сервисов, браузеров, операционных систем, языков программирования и т.д. Среди символов конечно нет русскоязычных сервисов.
Читать дальше →

«Мнемотехника» и «изучение иностранного языка» несовместимые понятия?! Давайте разберемся

Reading time13 min
Views284K
Здравствуйте, Уважаемые Хабрапользователи!



На написание данной публикации меня сподвигло возмущение от прочитанной недавно статьи одного хабраюзера, утверждающего, что мнемотехника «очень хороший способ запоминания информации, совершенно не подходящий для изучения иностранных слов». Я с этим высказыванием в корне не согласен, а потому, хотелось бы доказать обратное.
Если вам интересно, как использовать мнемотехнику для запоминания иностранных слов, то добро пожаловать под кат.
Читать дальше →

Подборка инструментов для эффективной frontend разработки

Reading time3 min
Views101K
В эту прекрасную пятницу осмелюсь предложить хабрасообществую небольшую подборку приложений, предназначенных для увеличения продуктивности во время работы с фронтэндом. Если ваш любимый апп здесь не представлен — добро пожаловать в комментарии!

Form Builder

image

Этот прекрасный генератор форм поможет вам в создании красивейших CSS логин-боксов и прочих input вещей, при минимальных временных затратах. Помимо форм на сайте этого проекта можно создавать и другие не менее красивые CSS элементы, в том числе кнопки и ленты.
еще 24 ссылки

Information

Rating
Does not participate
Registered
Activity