слайды
Всем привет!
Postgres 🔗Да, тема большая, так что я уточнил словом «Начало». Цель моего доклада — заинтересовать вас, рассказать о преимуществах и обсудить недостатки. В конце слайдов будут ссылочки на интересный материал на мой взгляд.
В основу баз данных была положена так называемая CAP-теорема. Она гласит, что для распределённых систем вы можете выбрать только 2 свойства из 3х: согласованность, доступность, партицирование. Ну это как создание сайта — выберите 2 из 3х: быстро, дёшево или качественно.
Рано или поздно, но всем нам приходится работать с графикой. Заказчики просят добавить ватермарки, сделать превьюшки картинок, построить графики… В мире python для этого есть библиотека Pillow, которая действительно умеет если не всё, то очень многое.
Установка pillow 🔗Pillow далеко не самостоятельная библиотека, ей необходима поддержка форматов сжатия файлов. Для ubuntu как правило хватает установки следующих пакетов:
$ sudo apt-get install libjpeg-dev libfreetype6-dev zlib1g-dev libpng12-dev То есть работы с jpg, png, ttf (шрифты) и gzip (нужен для некоторых форматов).
Рано или поздно перед каждым разработчиком встаёт задача что-нибудь стянуть с какого-нибудь сайта :) На этот раз я улетал туда, где интернета не было, так что хотел получить некую оффлайновую копию информации с сайта. Сам я не поощряю такие вещи (всё-таки авторы приложили немало усилий для наполнения контентом), но один разочек исключительно для личных нужд можно :) В интернете есть куча библиотек для парсинга сайтов, но я бы хотел найти реализацию на питоне.
Оригинал: ‘Django migrations without downtimes’ by Ludwig Hähne
Большинство современных веб-приложений используют реляционные базы данных. Время от времени в них приходится менять схему для реализации новых фич или удаления ставших ненужными полей или таблиц. Так что все миграции должны быть учтены в процессе деплоя. С одной стороны, даже запланированный даунтайм может дорого обойтись бизнесу, а уж для больших компаний и подавно. С другой стороны, применение миграций на боевой системе может порушить веб-приложение самым неожиданным образом.
Оригинал: ‘PostgreSQL on the Command Line’ by Philipe Fatio
Мне настолько понравилась эта статья, что я решил её перевести. Получилось весьма вольно, но сама суть сохранена.
Я уже больше 4 лет работаю с PostgreSQL. В начале использовал графические программы, сейчас же обхожусь только встроенными утилитами командной строки. Так получается более эффективно.
Этот пост разделён на несколько секций согласно задачам, которые можно решать с помощью psql:
настройка psql получение справки возня в песочнице описание БД построение запросов сравнение вывода клонирование базы данных получение данных Настройка psql 🔗psql отлично настроена и из коробки, однако я бы хотел остановиться на 2х вещах, которые использую каждый день и которые делают psql более удобным инструментом.
Не так давно Telegram открыл API для написание ботов. Примеры уже существующих можно посмотреть на их сайте. Всё общение сводится к отправке команды, её параметров и получение ответа, вот и меня попросили разобраться с этим и написать пример бота. Ну ok, почему бы и нет? :)
Регистрация нового бота telegram 🔗Начнём, как полагается, с документации. В ней сказано, что для регистрации своего бота надо обратиться к @BotFather с оной просьбой (/newbot).
Итак, у меня наконец-то появилось немного свободного времени, а значит пришло время попробывать rust. Давно хотел познакомиться с этим языком, т.к. разработчики обещают очень много плюшек: безопасный код, компилируемый в нативный, под кучу архитектур, интегрируемый с C/C++… В общем, попробовать стоит! В качестве туториала взял статью на Хабре.
Установка 🔗В репозитории ubuntu 14.04 пакета с именем rust не нашлось. Странно, вроде уже не молодой язык… Хотя там проблемы совместимости были до версии 1.
Уже второй раз за выходные натыкаюсь на особенность моей ОС - работа с шебенг. Это понятие применительно исключительно к миру *nix. Если вкратце, то это первая строка в файле, которая говорит с помощью какой программы оный запускать. Наверняка сталкивались с нечто похожим: #!/bin/bash или #!/usr/bin/python- это оно и есть :) Вернее, не совсем так, должны быть соблюдены следующие условия:
файл исполняемый (**x); файл не бинарный (в противном случае он запустится “как exe-шник”); первые 2 байта должны быть # и !
Проходил как-то собеседование на должность python-разработчика, одним из вопросов был что выведет следующий код:
def f(value=[]): value.append(1) print value f() f([1]) f() К сожалению, хоть я и знал в чём подвох (значения по умолчанию в python не так уж просты :) ), но ответил неправильно. Что же тут не так можно посмотреть под катом.
Всё дело тут в т.н. значении по умолчанию, которое на самом деле не совсем уж значение, а очень даже переменная.
Всем привет, прошу прощения, что так долго не писал, но на то были веские причины. За последние пару месяцев я узнал столько всего нового, написал кучу полезных вещей… Увы, времени и сил на то, чтобы оформить это в статью уже не остаётся :( Но обо всём по-порядку.
GDG Краснодар: начало положено 🔗С месяц назад в IT-парке Краснодара состоялось собрание, посвящённое созданию GDG движения в Краснодаре. GDG расшифровывается как Google Development Group - собрания программистов, на которых обсуждаются технологии Google.