Рубрика «Песочница» - 197

Ist das Emacs? Zehr gut!

Начну с небольшой истории. Лет так 15 назад ездил я на подработку сисадмином программистом в славный городе Mannheim, West Germany. Когда я приехал на работу и развернул своё рабочее окружение, большинство дойчей вообще не сильно поняли в чём я работаю, а вот директор конторы сразу мне сказал: «Ist das Emacs? Zehr gut!», добавив также что никто кто из текущих программистов не смог его освоить. А по честному, не такой уж я особенный — мне просто повезло: готовый конфиг мне дал один добрый человек, и помог мне разобраться с редактором на первых шагах. Я, в свою очередь хочу поделиться своим опытом с остальными, и решил сделать серию статей для начинающих и не очень, с рассмотрением разных полезных фич emacs.

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

Добрый день. Возникла ситуация, когда выпал диск из raid массива. Пришло уведомление от Zabbix о том, что 1 диск выпал, но без пояснения, какой, не очень информативно, пришлось лезть на сервер и смотреть, какой же диск выпал.

Небольшой скрипт на python который парсит вывод arcconf и сопоставляет диск в рейде с реальным диском(позиция на backplane).

Читать полностью »

В этой статье будет описан способ решения одной не очень известной задачи спортивного программирования. Решение требует всего несколько строк кода и очень эффективно, однако требует объяснения.
Читать полностью »

В данной статье я покажу, как реализуется ШИМ на микроконтроллерах семейства AVR.

ШИМ (широтно-импульсная модуляция) — процесс управления мощностью, которая подводится к нагрузке, при помощи изменения скважности импульсов, при фиксированной частоте.

На микроконтроллерах семейства AVR ШИМ реализуется весьма просто. В этой статье описывается пример реализации на микроконтроллере ATmega8.
Читать полностью »

Нормализация ФИАС и поиск с использованием словаря

Когда-то программировал .com (размер файла, напомню, <=64 kb). Сегодня ограничений почти нет, но если подсчитать количество мусорной информации, собранной на дисках всего мира и затраты на обслуживание… плюс биткоины… а хватит ли угля и газа на все это…

ФИАС – думаю, что аббревиатура знакома для большинства программистов, с рождения был монстром. В данный момент в архиве fias_dbf.rar 4.5 гигабайта, fias_xml.rar 6.3 гигабайта – заметим, что архив КЛАДР с почти аналогичной функциональностью порядка 30 мегабайт. При всех своих недостататках, (из них был всего лишь один существенный, а именно – неточность информации) КЛАДР решал свою задачу в достаточной степени хорошо. С 01.01.2018 КЛАДРу предписано not update.

Читать полностью »

На данный момент VK API уже имеет версию 5.68 и многие уже знакомы с его методом execute, который позволяет запускать последовательность других методов, сохраняя промежуточные результаты.

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

Реализация на PHP

Чтобы работать с API на PHP необходимо подключить библиотеку

require_once('src/VK/VK.php');
require_once('src/VK/VKException.php');

Затем необходимо пройти авторизацию, для того, чтобы начать делать запросы к vk.com

self::ex();
public static function ex () {
        $attach = ORM::for_table('attach')->where('id', 1)->find_one(); // получение данных для авторизации из базы данных таблицы attach
        $vk_config = array(
            'app_id'        => $attach->app_id,
            'api_secret'    => $attach->api_secret,
            'access_token'  => $attach->access_token
        );

        $vk = new VKVK($vk_config['app_id'], $vk_config['api_secret'], $vk_config['access_token']); // создание объекта с последующей авторизацией

Читать полностью »

Здравствуйте, дорогие хабрачитатели!

Появилась недавно задача подключить к одному интернет-магазину оплату криптовалютой. Причем не только популярными биткоинами, но и такими валютами, о которых мне раньше и слышать не приходилось. Реализовывать полноценный функционал взаимодействия с каждой криптовалютой отдельно, задача не из простых. Если для того же биткоина есть библиотеки, позволяющие начать работу практически из коробки (но без допиливания и танцев с бубном, как показывает практика, не обходится), то, например, для dogecoin нужно писать все с нуля. Так как данный вид оплаты для сайта не предполагался как основной, а скорее как фишка для рекламы и раскрутки, то и бюджет не предполагал крупной разработки. Читать полностью »

Про куки

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

$.cookie('cookie_name', 'cookie_value'); //установка
$.cookie('cookie_name'); //чтение
$.cookie('cookie_name', null); //удаление
$.cookie('cookie_name', 'cookie_value', {
    expires: 5,
    path: '/admin',
}); //опции

или

cookie.set('cookie_name', optios);
cookie.get('cookie_name');

В исходниках на получение куки всегда есть что-то из разряда

var cookies = document.cookie.split('; ');
for (var i = 0; i < cookies.length; i++) {
// и разбор самой куки
}

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

// прочитать
if (cookie.id === '1') {
    //удалить
    delete cookie.id;
}

//установить новое значение
cookie.key = '12341234';

//поменяем опции
cookie.options = {
    expires: new Date(Date.now() + 30*24*60*60*1000).toUTCString(),
    path: '/'
};

//обновить значение
cookie.key = '43214321';

Proxy

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

Читать полностью »

Итак, Вы написали свой первый (или 99-ый по счёту) скрипт на PHP и решили его продавать!

Ура! Поздравляю, Шарик — ты балбес, то есть вау… это круто! Вы стали одним из десятков миллионов людей на Земле, кому пришла в голову эта гениальная мысль. Проблема только в том, что у Вас сегодня огромная куча конкурентов, которым та же мысль пришла в голову гораздо раньше и, вероятно, часть из них уже смогла её довольно успешно реализовать.

Кто виноват? Никто.

Могу Вас успокоить, — эта мысль посещает рано или поздно почти любого софт-разработчика.
Посмотрите вокруг — сколько успешных людей, которые смогли создать и раскрутить свой продукт!

Вы не виноваты в том, что они додумались до этого 10 или 15 лет назад и поэтому… и если Вы всё же твёрдо настроены на успех, то… что ж… лучше поздно, чем никогда.

Что делать? Не сидеть сложа руки.
Читать полностью »

После очередной чистки системы (пылесосом) и смены термопасты (впервые с 2011 года) 45 нанометровый AMD Phenom II X6 1100T 3.3 GHz в простое грелся до 35 градусов, под нагрузкой до 60. Температура мостов на материнке (GA-880GA-UD3H AMD880G/SB850) была 38-45 градусов в простое, датчик общей температуры в корпусе около 37-39.

Цифры вроде не критичные, более чем адекватные для такого техпроцесса, но захотелось их снизить. Благо вентиляторы сейчас не самые дорогие.

Охлаждение в бюджетном miditower или как опустить процессор ниже 30 градусов - 1

Первые три температуры — корпус и мосты, далее скорости вентиляторов, ниже ядра процессора. Температура в простое до замены вентиляторов.

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

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js