Это одиннадцатая подборка советов про Python и программирование из моего авторского канала @pythonetc.
Рубрика «Программирование» - 256
Подборка @pythonetc, май 2019
2019-06-04 в 13:21, admin, рубрики: python, pythonetc, Блог компании Mail.Ru Group, ПрограммированиеTips and tricks from my Telegram-channel @pythonetc, May 2019
2019-06-04 в 13:21, admin, рубрики: python, pythonetc eng, Блог компании Mail.Ru Group, ПрограммированиеIt is a new selection of tips and tricks about Python and programming from my Telegram-channel @pythonetc.
Профилируем загрузку Хабра или как влияют 189 запросов на рендер страницы
2019-06-04 в 8:56, admin, рубрики: alt, developer tools, javascript, usability, возьми густой вишневый сок, Клиентская оптимизация, никто не читает теги, оптимизация, оптимизация сайта, Программирование, профилирование, Разработка веб-сайтов
Некоторое время назад я заинтересовался производительностью веб-сайтов, оптимизациями загрузки и тому подобными вещами. И вот, зайдя очередной раз на Хабр, подумал, что привык воспринимать довольно быструю загрузку ресурса как данность, даже не задумываясь о том, как этого удалось добиться. Поэтому я решил совместить приятное с полезным — посмотреть, как обстоят дела с производительностью Хабра и какие технические решения были сделаны для его оптимизации. Для тех, кому интересно узнать, что было сделано что бы мы получали контент как можно быстрее и как выглядит загрузка Хабра из Аргентины — прошу под кат.
Вышла бета-версия Odin — ещё одного языка программирования
2019-06-03 в 15:59, admin, рубрики: Odin, Компиляторы, Программирование, системное программированиеНезависимый разработчик, Бил Джинжер, представил Odin 0.10.0 — бета-версию языка программирования, которым он занимается с 2016 года. Новый язык сочетает элементы Pascal, C, Go, Oberon и напоминает гибрид Go c Rust. Исходный код, FAQ и документацию Odin можно найти на GitHub и сайте проекта.
Читать полностью »
Exceptional situations: part 1 of 4
2019-06-03 в 14:46, admin, рубрики: .net, C#, clr, CoreCLR, csharp, exceptions, ПрограммированиеIntroduction
It’s time to talk about exceptions or, rather, exceptional situations. Before we start, let’s look at the definition. What is an exceptional situation?
This is a situation that makes the execution of current or subsequent code incorrect. I mean different from how it was designed or intended. Such a situation compromises the integrity of an application or its part, e.g. an object. It brings the application into an extraordinary or exceptional state.
But why do we need to define this terminology? Because it will keep us in some boundaries. If we don’t follow the terminology, we can get too far from a designed concept which may result in many ambiguous situations. Let’s see some practical examples:
struct Number
{
public static Number Parse(string source)
{
// ...
if(!parsed)
{
throw new ParsingException();
}
// ...
}
public static bool TryParse(string source, out Number result)
{
// ..
return parsed;
}
}
This example seems a little strange, and it is for a reason. I made this code slightly artificial to show the importance of problems appearing in it. First, let’s look at the Parse
method. Why should it throw an exception?
DevOops вчера и сегодня
2019-06-03 в 14:45, admin, рубрики: devoops, devoops2019, devops, Блог компании JUG.ru Group, конференции, Программирование, системное администрированиеСегодня мы поговорим немного о настоящем, будущем и о программе конференции DevOops 2019. DevOps меняется с каждым днём. Вы помните 2004 год? У нас есть спикер, который работал с облаками в то время, когда и термина такого не было. Amazon Web Services запустили в 2006 году. Где-то в то же время начали появляться первые упоминания «DevOps». С тех пор прошла целая жизнь.
Недавно снова вспоминали «верните мой 2007». Представьте себе этот мир без вездесущих виртуалок на Amazon, без GitHub (он появился только в 2008), без уютных и безопасных докеров. Вспомните настройку iptables, пакетные менеджеры GNU/Linux, ручную пересборку модулей ядра, бессонные ночи. Всё ещё хотите туда? Вот такой был бы ваш 2019, если бы не ураганный прогресс этих лет.
Менялись технологии и компании. Приведу пару примеров. Например, все мы увидели чудесное преображение Microsoft – от Баллмеровского «Linux is Cancer» в 2001 году до повсеместного перехода на open source, спасения GitHub в 2018 и планов летом 2019 года представить ядро Linux как часть поставки Windows. Вместе со всей этой движухой менялись и предпочтения инженеров относительно получаемой информации.
Читать полностью »
Где хранятся ваши константы на микроконтроллере CortexM (на примере С++ IAR компилятора)
2019-06-03 в 10:05, admin, рубрики: c++, const, constexpr, cortex-m, cortex-m4, микроконтроллеры, Программирование, программирование микроконтроллеров, С++Я работаю со студентами на микроконтроллере STM32F411RE, имеющего целых 512 кБайт ROM и 128 кБайт ОЗУ.
Обычно в этом микроконтроллере в ROM память записывается программа, а в RAM изменяемые данные и очень часто нужно сделать так, чтобы константы лежали в ROM.
В микроконтроллере STM32F411RE, ROM память расположена по адресам с 0x08000000...0x0807FFFF, а RAM с 0x20000000...0x2001FFFF.
И если все настройки линкера правильные, студент рассчитывает, что вот в таком незамысловатом коде его константа лежит в ROM:
class WhantToBeInROM
{
private:
int i;
public:
WhantToBeInROM(int value): i(value) {}
int Get() const
{
return i;
}
};
const WhantToBeInROM myConstInROM(10);
int main()
{
std::cout << &myConstInROM << std::endl ;
}
Вы тоже можете пробовать ответить на вопрос: где лежит константа myConstInROM в ROM или в RAM?
Если вы ответили на этот вопрос, что в ROM, поздравляю вас, на самом деле скорее всего вы не правы, константа в общем случае будет лежать в RAM и чтобы разобраться, как правильно и законно расположить ваши константы в ROM — добро пожаловать под кат.
Читать полностью »
Указатели в Python: в чём суть?
2019-06-03 в 9:18, admin, рубрики: internals, python, Блог компании Mail.Ru Group, никто не читает теги, ооп, отладка, ПрограммированиеЕсли вы когда-нибудь работали с такими низкоуровневыми языками, как С или С++, то наверняка слышали про указатели. Они позволяют сильно повышать эффективность разных кусков кода. Но также они могут запутывать новичков — и даже опытных разработчиков — и приводить к багам управления памятью. А есть ли указатели в Python, можно их как-то эмулировать?
Указатели широко применяются в С и С++. По сути, это переменные, которые содержат адреса памяти, по которым находятся другие переменные. Чтобы освежить знания об указателях, почитайте этот обзор.
Благодаря этой статье вы лучше поймёте модель объектов в Python и узнаете, почему в этом языке на самом деле не существуют указатели. На случай, если вам понадобится сымитировать поведение указателей, вы научитесь эмулировать их без сопутствующего кошмара управления памятью.
Читать полностью »
Отчет с завтрака с Чарльзом Уэзереллом, автором культовой книги «Этюды для программистов»
2019-06-02 в 16:56, admin, рубрики: fpga, История ИТ, ненормальное программирование, обучение программированию, ПЛИС, Программирование, разработка игр, системное программирование, схемотехника, чарльз уэзерелл, этюды для программистовЗавтрак с Чарльзом Уэзереллом, автором культовой книги «Этюды для программистов», затянулся на четыре часа. В конце-концов официантка попросила нас из ресторана в Пало-Альто, сказав что в ресторан большая очередь, а мы тут с восьми утра заседаем. За это время мы обсудили массу интересных вещий: работу Чарльза в Ливерморской лаборатории и Оракле, объектно-ориентированное и функциональное программирование, компиляторы и языки описания аппаратуры, закладки в процессоры, неэффективность нейронных сетей и незаслуженно забытый Пролог, посещение Чарльзом России, обработка текста конечным автоматом в аппаратном сопроцессоре и создание школьниками видеоигр на ПЛИС.
Содержания четырех часов с Чарльзом Уэзереллом хватит для пятидесяти статей на Хабре, поэтому перечислю в основном темы, после чего приведу некоторые детали про три из них:
Читать полностью »