Skip to content

Instantly share code, notes, and snippets.

@klopp
klopp / commit-msg
Created Mar 25, 2020
Add branch name to commit message
View commit-msg
#!/bin/bash
NAME=$(git branch | grep '' | sed 's/ //')
MSG=$(head -n 1 "$1");
if [[ ! "$MSG" =~ "$NAME" ]]; then
echo "$NAME"' '"$(cat $1)" > "$1"
DESCRIPTION=$(git config branch."$NAME".description)
if [ -n "$DESCRIPTION" ]; then
echo "" >> "$1"
@klopp
klopp / mss.c
Last active Oct 8, 2020
Максимальная сумма непрерывной возрастающей последовательности в массиве, O(n)
View mss.c
#include <stdio.h>
#define TEST_MAX_SUM_OF_INC_SUBSEC_(a, ok) \
errors += test_( (a), sizeof((a)) / sizeof((a)[0]), (ok) )
static long max_sum_of_inc_subseq_( const int *array, size_t size )
{
long sum_max = 0;
if( array ) {
@klopp
klopp / README-XML.txt
Last active Oct 8, 2020
Про парсеры XML
View README-XML.txt
Поначалу захотелось Mojo::DOM. Когда-то использовал этот модуль в качестве замены HTML::DOM (он кошмарен),
и не разочаровался. Вменяемый набор методов, но... На XML от 100 Mb он так тормозил, что сразу отбросил.
OK, идём по классике: XML::LibXML. Из плюсов:
1) хороший комбайн с кучей возможностей (хотя, как и любое универсальное, для конкретных задач может быть громоздок)
2) вполне шустро
3) приятная мелочь: умеет обрабатывать NS в атрибутах (все следующие варианты - нет, и если мы не знаем заранее какие
NS могут встретиться, приходится заморачиваться отдельно; дальше отдельно про NS упоминать не буду)
@klopp
klopp / xml-fast.pl
Last active Mar 2, 2020
Парсинг XML - V
View xml-fast.pl
#!/usr/bin/perl
# ------------------------------------------------------------------------------
# Напишите скрипт, получающий в качестве параметра путь к XML-файлу и выдающий
# на STDOUT следующее:
# * суммарное число букв внутри тегов, не включая пробельные символы
# (<aaa dd="ddd">text</aaa> - четыре буквы)
# * суммарное число букв нормализованного текста внутри тегов, включая пробелы
# * число внутренних ссылок (теги <a href="#id">)
# * число битых внутренних ссылок (ссылки на несуществующие ID элементов)
@klopp
klopp / xml-parser-tag.pl
Last active Mar 1, 2020
Парсинг XML - IV
View xml-parser-tag.pl
#!/usr/bin/perl
# ------------------------------------------------------------------------------
# Напишите скрипт, получающий в качестве параметра путь к XML-файлу и выдающий
# на STDOUT следующее:
# * суммарное число букв внутри тегов, не включая пробельные символы
# (<aaa dd="ddd">text</aaa> - четыре буквы)
# * суммарное число букв нормализованного текста внутри тегов, включая пробелы
# * число внутренних ссылок (теги <a href="#id">)
# * число битых внутренних ссылок (ссылки на несуществующие ID элементов)
@klopp
klopp / xml-parser.pl
Last active Mar 1, 2020
Парсинг XML - |||
View xml-parser.pl
#!/usr/bin/perl
# ------------------------------------------------------------------------------
# Напишите скрипт, получающий в качестве параметра путь к XML-файлу и выдающий
# на STDOUT следующее:
# * суммарное число букв внутри тегов, не включая пробельные символы
# (<aaa dd="ddd">text</aaa> - четыре буквы)
# * суммарное число букв нормализованного текста внутри тегов, включая пробелы
# * число внутренних ссылок (теги <a href="#id">)
# * число битых внутренних ссылок (ссылки на несуществующие ID элементов)
@klopp
klopp / xml-twig.pl
Last active Mar 1, 2020
Парсинг XML - II
View xml-twig.pl
#!/usr/bin/perl
# ------------------------------------------------------------------------------
# Напишите скрипт, получающий в качестве параметра путь к XML-файлу и выдающий
# на STDOUT следующее:
# * суммарное число букв внутри тегов, не включая пробельные символы
# (<aaa dd="ddd">text</aaa> - четыре буквы)
# * суммарное число букв нормализованного текста внутри тегов, включая пробелы
# * число внутренних ссылок (теги <a href="#id">)
# * число битых внутренних ссылок (ссылки на несуществующие ID элементов)
@klopp
klopp / xml-libxml.pl
Last active Feb 29, 2020
Парсинг XML - I
View xml-libxml.pl
#!/usr/bin/perl
# ------------------------------------------------------------------------------
# Напишите скрипт, получающий в качестве параметра путь к XML-файлу и выдающий
# на STDOUT следующее:
# * суммарное число букв внутри тегов, не включая пробельные символы
# (<aaa dd="ddd">text</aaa> - четыре буквы)
# * суммарное число букв нормализованного текста внутри тегов, включая пробелы
# * число внутренних ссылок (теги <a href="#id">)
# * число битых внутренних ссылок (ссылки на несуществующие ID элементов)
View StrictRound.pm
package StrictRound;
# ------------------------------------------------------------------------------
# Обёртка для POSIX::round. Позволяет настраивать контроль входного параметра
# и реакцию на ошибки. Плюс обрабатывает ',' (или что ещё) как десятичную точку.
#
# Пример:
#
# use StrictRound qw/strict_round/, {
# allow_undef => 1, - разрешить undef и ''
View anagrams.pl
#!/usr/bin/perl
# --------------------------------------------------------------------------------
# Вход: массив слов
# Выход: отдельно сгруппировать слова, являющиеся анаграммами,
# отдельно - не являющиеся
# --------------------------------------------------------------------------------
use Modern::Perl;
use utf8;
use DDP;
You can’t perform that action at this time.