Pull to refresh
259
17
Антон Околелов @varanio

Go-тимлид, веду канал https://t.me/crossjoin

Send message

Важные изменения в работе CTE в PostgreSQL 12

Reading time2 min
Views25K
WITH w AS  NOT MATERIALIZED (
    SELECT * 
    FROM very_very_big_table
)
SELECT * 
FROM w AS w1 
    JOIN w AS w2 
        ON w1.key = w2.ref
WHERE w2.key = 123;

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


Это войдет в PostgreSQL 12, и это big deal. Давайте рассмотрим, почему

Читать дальше →
Total votes 44: ↑43 and ↓1+42
Comments15

Иди-ка ты сам на… или правила общения в команде

Reading time3 min
Views59K

Пост-ответ на статью "Иди-ка ты на !@# со своей "токсичностью"".


Если бы я последовал советам из этой статьи, мне достаточно было бы проявить эмоцию и сказать автору "Иди-ка ты сам на ..., ты ничего не понимаешь!".


Однако это не помогло бы донести мою мысль. Поэтому давайте разберем поподробнее.

Читать дальше →
Total votes 280: ↑230 and ↓50+180
Comments502

Как выживать в изменяющемся мире разработки

Reading time4 min
Views22K

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


Взять к примеру, мир фронтенда. Со знанием JavaScript пятилетней давности сейчас хорошую работу не найдешь. Сейчас RequireJS + Grunt не прокатят, надо знать React, Webpack, современный ES или TypeScript и т.д. Причем в следующем году многое уже снова устареет.


При этом не всегда на работе можно получить новые знания, потому что зачастую там тонны легаси (если долго пилится какой-то продукт — это неизбежно), которые никто переписывать "по модному" не даст.


Что же делать? Делать pet projects по ночам? Или пытаться сменить направление развития на более стабильное во времени?


Особенно часто этот вопрос встает у программистов с детьми. Как оставаться актуальным на рынке в долгой перспективе, не тратя на это всё личное время?

Давайте подумаем над вариантами
Total votes 34: ↑25 and ↓9+16
Comments60

Применяем принцип KISS к самим принципам проектирования

Reading time3 min
Views15K

(Update: заменил картинку на более нейтральную)


Коллега упомянул в беседе принцип "Convention over configuration", и я подумал, блин, наверно это что-то крутое, нужно изучить, почитать статьи, а то отстану от жизни.


Каково было моё удивление, что вcё обьяснение помещается в одной фразе "Используй дефолты, которые можно при желании переопределять".


И тут я подумал, что очень много понаверчено принципов, которые произносятся с умным лицом и наморщенным лбом, хотя по сути там ничего сложного нет. Многие из них можно объяснить буквально одной фразой. Ну, может, абзацем текста или практическим примером. На пальцах, короче. Вообще, очень часто бывает такое, что объясняешь кому-то за минуту то, что сам изучал довольно долго. А какие-то детали прирастают уже потом, главное получить "ключ".


В итоге я попытался сделать такую табличку. Можно сказать, своего рода русско-китайский разговорник:

Читать дальше →
Total votes 20: ↑16 and ↓4+12
Comments22

Достоинства и фатальные недостатки типизации в php

Reading time4 min
Views29K

Язык php часто ругают, обычно необоснованно. Особенно удивляет, что javascript ругают меньше. Зачастую это делают люди, которые писали на нем 10+ лет назад, когда язык был действительно чертовски плох, да и разработчики в те времена не задумывались над качеством кода. Посмотрите хотя бы на код wordpress, который до сих пор вызывает шок.


Ругают необоснованно, но проблемы у языка, конечно же, есть, и они серьёзные. Разуметеся, если сравнить последние релизы php7 (с нормальным ООП и строгим тайпхинтингом) и php4, то разница будет колоссальная. Однако и в последних версиях языка не всё гладко, и до java/c# пока что очень далеко. Более того, берусь утверждать, что будущее php тоже довольно сомнительно (с точки зрения типов).


Другими словами, давайте рассмотрим предметно, что хорошо и что плохо в php с точки зрения типизации.

Читать дальше →
Total votes 49: ↑35 and ↓14+21
Comments116

Опубликованы результаты опроса по использованию javascript-технологий «The state of JavaScript 2017»

Reading time2 min
Views12K


Всем нам время от времени становится интересно, не устарела ли та или иная технология, и что сейчас в тренде. Особенно это актуально в мире frontend.


Сегодня у нас появились ответы на некоторые из этих вопросов. Сегодня на сайте https://stateofjs.com опубликован новый отчет с результатами опроса двадцати тысяч разработчиков. Лучше всего сразу смотреть оригинал, но если времени мало, то в этой статье будут освещены ключевые моменты.

Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments6

Лангуаге файлюрен, или что нам делать с языком?

Reading time2 min
Views3.9K
Про гос. крипторубль:

— Какое отделение вам намайнило, туда и идите
— Мне только транзакцию подтвердить!

Давайте посмотрим, что не так в этой шутке.

Читать дальше →
Total votes 23: ↑10 and ↓13-3
Comments37

Киллерфича в vim — это режимы? Серьёзно?

Reading time4 min
Views30K

Недавно вышла статья, которую вы наверняка читали, про то, что vim — хорош, а IDE — так себе, скорость набора текста не та.


Напомню: главный посыл той статьи был в том, что главная киллер-фича вима — это режимы, благодаря которой всё остальное не важно. При этом автор согласился с тем, что в IntellijIdea и других IDE есть хоткеи и т.д., которыми вполне можно пользоваться. Но режимов то нет, поэтому вим.


Далее автор предлагает для перемещения по словам вместо ctrl-стрелочка использовать последовательность Esc, e и потом возвращаться в режим редактирования i. Всё это потому, что неудобно удерживать ctrl.


Я знаю, что статьи, рассматривающие vim в невыгодном свете, активно минусуют, но я должен выразить свою позицию.

Читать дальше →
Total votes 197: ↑155 and ↓42+113
Comments218

Вышел PostgreSQL 10

Reading time2 min
Views52K

На самом деле прошло уже два дня, но статью на Хабр никто до сих пор не написал, так что придется мне устранять это упущение, что и делаю с удовольствием.


Итак, что же нового в этой версии PostgreSQL?


Во-первых, изменилось само версионирование. До "десятки" мы наблюдали множество минорных версий 9.x, которые выходили примерно раз в год и при этом вносили серьезные, далеко не минорные изменения. Поэтому с версии 10 было принято решение сделать нумерацию 10, 11, 12 и т.д. Кстати, MySQL, похоже пошел по тому же пути, прыгнул с 5.7 на 8.0


Ладно, это всё мелочи, перейдем к существу вопроса

Читать дальше →
Total votes 86: ↑81 and ↓5+76
Comments108

Опрос разработчиков от StackOverflow (2017)

Reading time3 min
Views34K

В конце марта вышел очередной мега-опрос разработчиков от StackOverflow, в котором приняли участие десятки тысяч человек. Ссылка на результаты опроса здесь. Отчет получился внушительным по размеру, поэтому давайте просто рассмотрим некоторые интересные моменты из него.


Кстати, на КДПВ — список "Most Loved" языков, это языки, на которых опрашиваемые пробовали писать, и им понравилось.


Читать дальше →
Total votes 62: ↑55 and ↓7+48
Comments104

Опрос. Какой php-фреймворк вы используете?

Reading time1 min
Views41K
Давно не делали опрос о популярности php-фреймворков. Это, конечно, не волшебный мир JavaScript, где всё меняется каждые полгода-год, но всё-таки и в php тоже постоянно идут изменения.

Выпускаются новые версии, что-то устаревает, что-то входит в моду и т.д. Один фреймворк более «компонентный» и лучше следует принципам SOLID, другой удобен для быстрого старта, третий имеет хорошее комьюнити.

Итак, опрос для тех, кто использует php в своей практике.
Читать дальше →
Total votes 28: ↑23 and ↓5+18
Comments255

Пробуем делать web-frontend на Rust (WebAssembly)

Reading time4 min
Views39K

Недавно вышла новость про то, что webassembly теперь включен в firefox 52 из коробки. А потом еще и chrome 57 подтянулся (правда, там вроде бы были какие-то баги с запуском). Я решил, что обязательно надо попробовать.


Для тех, кто не знает, что такое webassembly краткая информация: webassembly (или wasm) — это низкоуровневый язык, который понимают браузеры, и в который можно будет скомпилировать программы, написанные на популярных языках. Это гораздо более выгодно по скорости парсинга и выполнения, чем компилировать эти языки в чистый javascript или какой-нибудь asm.js.


Wasm задумывался в основном для c/c++, но, на удивление, уже все готово, чтобы скомпилировать программу на rust. Давайте сделаем небольшое приложение и посмотрим, что получится. Все это будем компилировать на Ubuntu. Без теоретических деталей, просто "пощупаем".

Читать дальше →
Total votes 63: ↑61 and ↓2+59
Comments144

Опрос айтишников. На «вы» или на «ты»?

Reading time1 min
Views28K
Не секрет, что в подавляющем большинстве контор, где работает много программистов, админов и т.д., все общаются на «ты», причем зачастую независимо от должности и возраста.

При этом при общении на сайтах в интернете (facebook, habr и др.), даже на сугубо «программистские» темы, стало довольно много «выкания». Замечу, что в нулевых в интернете все были строго на «ты», без вариантов, и постепенно это сходит на нет.

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

Предлагаю небольшой опрос-замер на эту тему. Через пару лет повторим, чтобы увидеть тенденцию.

Естественно, не во всех языках есть это различие. В английском языке все на «you», например. Хотя и там ранше было слово thou, которое до сих пор можно встретить у Шекспира или в Библии. (Кстати, аналогом «you have» будет «thou hast», почти как «du hast» у Rammstein).
Читать дальше →
Total votes 67: ↑44 and ↓23+21
Comments158

Amazon S3 около трех-четырех часов работал с перебоями, Medium, Slack, Coursera, Trello лежали

Reading time1 min
Views16K
Примерно с 9 вечера до часу ночи по Московскому времени были перебои с работой облачного хранилища Amazon S3. Началось это с сообщения в твиттер «S3 is experiencing high error rates. We are working hard on recovering», хотя мир узнал об этом раньше: перестали работать (полностью или частично) сайты Medium, Slack, Coursera, Trello, Adobe и еще куча.

При этом некоторое время не работала страница со статусами status.aws.amazon.com. Ну как не работала — она работала, но показывала, что все хорошо, в Багдаде всё спокойно, «Service is operating normally».

Дополнение от ValdikSS: пользователи мышек фирмы Razer не могли изменить DPI, т.к. для этого нужно, вероятно, соединение с Amazon.
Читать дальше →
Total votes 34: ↑32 and ↓2+30
Comments31

«Hello, (real) world!» на php в 2017 году

Reading time8 min
Views76K
Вы наверняка думаете, что писать на php — это просто. И «hello, world» выглядит примерно так так:

<?php
echo 'Hello, world!';

Конечно, чего еще ожидать от языка с низким порогом входа. Ну да, именно так и было раньше. Много лет назад. Но теперь, в 2017 году никто так уже не делает. Давайте рассмотрим, почему, и попробуем построить наше более реалистичное hello-world приложение по шагам, а их, скажу сразу, получилось не мало.

Читать дальше →
Total votes 347: ↑260 and ↓87+173
Comments571

Gitlab «лежит», база уничтожена (восстанавливается)

Reading time1 min
Views83K
image Вчера, 31 января, сервис Gitlab случайно уничтожил свою продакшн базу данных (сами гит-репозитории не пострадали).

Дело было примерно так.
Читать дальше →
Total votes 140: ↑134 and ↓6+128
Comments165

Блеск и нищета php. Эволюция языка от 4.x к 7.1

Reading time5 min
Views42K

image


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


Давайте мысленно вернемся во времена php4, когда получили своё развитие wordpress, bitrix и миллионы других CMS и домашних страничек.

Читать дальше →
Total votes 71: ↑67 and ↓4+63
Comments286

Ограничения (сonstraints) PostgreSQL: exclude, частичный unique, отложенные ограничения и др

Reading time4 min
Views64K
Целостность данных легко нарушить. Бывает так, что в поле price попадает значение 0 из-за ошибки в коде приложения (периодически всплывают новости, как в том или ином инет-магазине продавали товары по 0 долларов). Или бывает, что удалили юзера из таблицы, но какие-то данные о нем остались в других таблицах, и эти данные вылезли в каком-то интерфейсе.

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

1. Кастомный подтип через ключевое слово DOMAIN

Читать дальше →
Total votes 49: ↑48 and ↓1+47
Comments15

PostgreSQL — не Rocket Science. Почем сейчас яйца?

Reading time5 min
Views14K


Постоянно натыкаюсь на высказывания из серии «PostgreSQL слишком сложная база для моего небольшого проекта, поэтому буду продолжать работать с MySQL».
В этой статье я хотел бы показать, что человеку, знающему MySQL, не составит абсолютно никакого труда начать разрабатывать под PostgreSQL
Читать дальше →
Total votes 25: ↑22 and ↓3+19
Comments76

Information

Rating
324-th
Location
Praha, Hlavni Mesto Praha, Чехия
Works in
Date of birth
Registered
Activity

Specialization

Backend Developer, Fullstack Developer
Lead