Порой требуется взять (x)html страницу и получить отформатированный файл. Возник вопрос, как из исходной, порой минимизированный страницы, получить нормально отформатированный файл? Оказывает, что вопрос решаем утилитой xmllint:
( Хотя у меня получилось не с первого раза (или зачем ascii2uni?) )
P.S. По умолчанию xmllint для форматирования использует два пробела. Любителям tab-ов нужно установить XMLLINT_INDENT переменную окружения. Можно командой export XMLLINT_INDENT="Ctrl+v,Ctrl+i" (export XMLLINT_INDENT="\t" не сработает), а еще лучше прописать это в ~/.bash_profile
xmllint --format --recover --encode utf8 --output output_file.html input_file.html
( Хотя у меня получилось не с первого раза (или зачем ascii2uni?) )
P.S. По умолчанию xmllint для форматирования использует два пробела. Любителям tab-ов нужно установить XMLLINT_INDENT переменную окружения. Можно командой export XMLLINT_INDENT="Ctrl+v,Ctrl+i" (export XMLLINT_INDENT="\t" не сработает), а еще лучше прописать это в ~/.bash_profile
- Tue, 18:47: Идти на выборы или нет? Интересные наблюдения от Акунина. http://t.co/YYEmKMKB
Оригинал взят у
borisakunin в Огорчим «жуликов»?
Как и многие из вас, я долго ломал голову над вопросом: участвовать в выборах или присоединиться к народному движению «Нах-нах». Моим сомнениям положила конец мудрая предвыборная стратегия правящей партии.
Поскольку 4 декабря в Москве меня не будет, я, так еще и не определившись, решил на всякий случай взять открепительный талон.
Оказалось, что в Москве это очень и очень непросто. На сайте избирательной комиссии разглядеть свой переулок я не смог (убедитесь сами). Адрес и телефон комиссии тоже отсутствуют. Нет этих данных и на плакатах, бодро зовущих меня на выборы.
В моем квартале я обнаружил всего 2 (два) таких плаката. На обоих хулиганские надписи (не иначе веселые поросята из «Нах-наха» поработали), а куда «приходить и голосовать!» – непонятно.
На подъездах тоже ничего не вывешено. И вообще: я вдруг сообразил, что предвыборных призывов у нас в городе как-то сильно меньше, чем во все предыдущие разы.
Талон я все-таки добыл, но для этого пришлось проявить незаурядную настырность с использованием интернета и звонками (двумя) в Избирком, где у моей жены первым делом зачем-то спросили ФИО. Наконец, мы с трудом отыскали избушку без окон-без дверей (и тем более без вывески), где находится участковая избирательная комиссия.
Нашему приходу там ужасно удивились. На вопросы о причине странной конспиративности смущенно отводили глаза. Когда я спросил: «Разве вы не хотите, чтобы на выборы пришло много народу?» - промолчали.
Какой-то парадокс, подумал я. Везут тыщи «нашистов» в столицу поднимать процент явки, а от местных избирателей прячутся.
И снизошло на меня сатори. И открылся Третий Глаз, и узрел я Истину.
Она проста.
«Партия жуликов» не хочет, чтоб москвичи пришли голосовать. Боится. Если москвичи придут и проголосуют, то результаты сильно огорчат кремлевских наперсточников. Обнаружится, что собственная столица их на дух не переносит: Кремль живет, под собою не чуя Москвы.
И тут я решил, что свой открепительный талон непременно использую – пускай даже и не в Москве. Вредность – одна из коренных российских национальных черт. Я ею тоже не обделен.
Послушайте, дамы-господа, а давайте огорчим «жуликов». Давайте не поленимся, пойдем и используем «свой шанс повлиять на политику страны», если уж нас уговаривают так ненастойчиво. Я, например, чертыхаясь, отдам свой голос за кислое «Яблоко».
( Почему все-таки за «Яблоко» )
Друзья «нах-нахи», повзрослейте уже, пожалуйста! Поймите: ваша школярская инициатива как нельзя лучше устраивает «жуликов». Пробойкотируете вы выборы или, озорно похрюкивая, сжуете бюллетень – это им все равно. Лишь бы вы не проголосовали за кого-нибудь другого.
Кстати о школярстве. Мне тут один молодой человек со смехом рассказывал, как их на работе заставляют фотографировать на мобильник избирательный бюллетень, где напротив сами-знаете-какой партии должна стоять галочка. «Я сфоткаю, не проблема, - сказал сей вполне аполитичный юноша. - И приколюсь: после возьму да навтыкаю галок всем партиям. А нé фига».
Я же говорю: вредная у нас нация.
Поскольку 4 декабря в Москве меня не будет, я, так еще и не определившись, решил на всякий случай взять открепительный талон.
Оказалось, что в Москве это очень и очень непросто. На сайте избирательной комиссии разглядеть свой переулок я не смог (убедитесь сами). Адрес и телефон комиссии тоже отсутствуют. Нет этих данных и на плакатах, бодро зовущих меня на выборы.
В моем квартале я обнаружил всего 2 (два) таких плаката. На обоих хулиганские надписи (не иначе веселые поросята из «Нах-наха» поработали), а куда «приходить и голосовать!» – непонятно.
На подъездах тоже ничего не вывешено. И вообще: я вдруг сообразил, что предвыборных призывов у нас в городе как-то сильно меньше, чем во все предыдущие разы.
Талон я все-таки добыл, но для этого пришлось проявить незаурядную настырность с использованием интернета и звонками (двумя) в Избирком, где у моей жены первым делом зачем-то спросили ФИО. Наконец, мы с трудом отыскали избушку без окон-без дверей (и тем более без вывески), где находится участковая избирательная комиссия.
Нашему приходу там ужасно удивились. На вопросы о причине странной конспиративности смущенно отводили глаза. Когда я спросил: «Разве вы не хотите, чтобы на выборы пришло много народу?» - промолчали.
Какой-то парадокс, подумал я. Везут тыщи «нашистов» в столицу поднимать процент явки, а от местных избирателей прячутся.
И снизошло на меня сатори. И открылся Третий Глаз, и узрел я Истину.
Она проста.
«Партия жуликов» не хочет, чтоб москвичи пришли голосовать. Боится. Если москвичи придут и проголосуют, то результаты сильно огорчат кремлевских наперсточников. Обнаружится, что собственная столица их на дух не переносит: Кремль живет, под собою не чуя Москвы.
И тут я решил, что свой открепительный талон непременно использую – пускай даже и не в Москве. Вредность – одна из коренных российских национальных черт. Я ею тоже не обделен.
Послушайте, дамы-господа, а давайте огорчим «жуликов». Давайте не поленимся, пойдем и используем «свой шанс повлиять на политику страны», если уж нас уговаривают так ненастойчиво. Я, например, чертыхаясь, отдам свой голос за кислое «Яблоко».
( Почему все-таки за «Яблоко» )
Друзья «нах-нахи», повзрослейте уже, пожалуйста! Поймите: ваша школярская инициатива как нельзя лучше устраивает «жуликов». Пробойкотируете вы выборы или, озорно похрюкивая, сжуете бюллетень – это им все равно. Лишь бы вы не проголосовали за кого-нибудь другого.
Кстати о школярстве. Мне тут один молодой человек со смехом рассказывал, как их на работе заставляют фотографировать на мобильник избирательный бюллетень, где напротив сами-знаете-какой партии должна стоять галочка. «Я сфоткаю, не проблема, - сказал сей вполне аполитичный юноша. - И приколюсь: после возьму да навтыкаю галок всем партиям. А нé фига».
Я же говорю: вредная у нас нация.
Сравнивал скорость сериализации/десериализации и потребление памяти для JSON (v1.2.1), serialize и igbinary (v1.1.1) на массиве в 4МБ. Для PHP 5.3.8 получилось:
Т.е. igbinary сработал в 2 раза быстрее отведя в 4,5 раза меньше памяти под выходную строку. С такими показателями это хороший кандидат на замену стандартного механизма.
| encode | decode | memory | |
|---|---|---|---|
| serialize | 100% | 100% | 100% |
| JSON | 246% | 106% | 129% |
| igbinary | 248% | 200% | 452% |
Т.е. igbinary сработал в 2 раза быстрее отведя в 4,5 раза меньше памяти под выходную строку. С такими показателями это хороший кандидат на замену стандартного механизма.
Провел тест на использование двух шаблонных движков в PHP: Smarty и ctpp. Если кратко, то без PHP акселераторов ctpp быстрее раз в 15, с акселераторами в 3 (с eAccelerator немного шустрее, чем с XCache).( Технические подробности под катом )
Оригинал взят у
svictorych в А теперь про прогрессивную шкалу НДФЛ
Сварщик Василий - молодой предприниматель - за месяц работы сварил десять парковых скамеек по десять тысяч рублей за штуку. Валовая прибыль без учёта налогов составила 10000 рублей в месяц. Сварщик Пётр - конкурент Василия - сварил за месяц работы двадцать скамеек и тоже реализовал их все по аналогичной цене. Валовая прибыль без учёта налогов составила 20000 рублей в месяц. Очевидно, что Пётр в два раза больше работал, произвёл в два раза больше продукции и заработал в два раза больше. Так ли это?
При плоской шкале НДФЛ в карманах обоих сварщиков останется: у Василия 8700 рублей, у Петра 17400 рублей. Пётр работал в два раза больше Василия? 17400/2=8700 рублей.
Что мы увидим при прогрессивной шкале НДФЛ? Не будет заостряться на том, какая прогрессия и с каких порогов облагается, а рассмотрим задачу в общем виде. Допустим, имеем следующую прогрессивную систему НДФЛ: при доходе до 10000 рублей платим 13%, а при доходе выше 10000 рублей 20%. Считаем. у Василия, как и в прошлый раз, останется 8700 рублей, а у Петра останется 10000-13%=8700 плюс 10000-20% = 16700 рублей.
Таким образом, одна и та же работа оплачивалась по-разному: за работу по производству одной лавки Василий получил 870 рублей, а Пётр 835 рублей. То есть труд Пётра, работавшего вдвое больше Василия, производившего вдвое больше продукта, заплатившего в совокупности бОльший налог в бюджет (3300 рублей против 1300), оценивается на 35 рублей дешевле за каждую единицу продукции.
Вопрос: почему это может считаться справедливым? За что поощрён Василий и почему труд Петра стоит дешевле при прочих равных?
При плоской шкале НДФЛ в карманах обоих сварщиков останется: у Василия 8700 рублей, у Петра 17400 рублей. Пётр работал в два раза больше Василия? 17400/2=8700 рублей.
Что мы увидим при прогрессивной шкале НДФЛ? Не будет заостряться на том, какая прогрессия и с каких порогов облагается, а рассмотрим задачу в общем виде. Допустим, имеем следующую прогрессивную систему НДФЛ: при доходе до 10000 рублей платим 13%, а при доходе выше 10000 рублей 20%. Считаем. у Василия, как и в прошлый раз, останется 8700 рублей, а у Петра останется 10000-13%=8700 плюс 10000-20% = 16700 рублей.
Таким образом, одна и та же работа оплачивалась по-разному: за работу по производству одной лавки Василий получил 870 рублей, а Пётр 835 рублей. То есть труд Пётра, работавшего вдвое больше Василия, производившего вдвое больше продукта, заплатившего в совокупности бОльший налог в бюджет (3300 рублей против 1300), оценивается на 35 рублей дешевле за каждую единицу продукции.
Вопрос: почему это может считаться справедливым? За что поощрён Василий и почему труд Петра стоит дешевле при прочих равных?
Для переходящих с InnoDB под MySQL-ем не стоит забывать, что в Postgresql индексы для внешних ключей автоматически не создаются. Это вполне логично, ведь внешний ключ это условие ограничения целостности, а индекс - механизм ускорения доступа к данным (коего, к слову, в SQL стандарте нет).
Специально провел опыт на 9-ке под Debian-ом. Банальный каталог "товар-характеристики". Три таблицы. В первой 250 000 записей (товары), во-второй 10 000 (характеристики), третья линковочная (связывает товар->характеристика) содержащая 1-у запись из первой таблицы и 10-ть случайных записей из второй. Т.е. в линковочной таблице 2 500 000 записей. Если индекс по внешним ключам в линковочной таблице не строить, то запрос на получение всех характеристик одного товара (т.е. 2 JOIN + WHERE) занимает ~0,230 сек. После добавления двух индексов менее 0,001 сек. В 200 раз быстрее.
Специально провел опыт на 9-ке под Debian-ом. Банальный каталог "товар-характеристики". Три таблицы. В первой 250 000 записей (товары), во-второй 10 000 (характеристики), третья линковочная (связывает товар->характеристика) содержащая 1-у запись из первой таблицы и 10-ть случайных записей из второй. Т.е. в линковочной таблице 2 500 000 записей. Если индекс по внешним ключам в линковочной таблице не строить, то запрос на получение всех характеристик одного товара (т.е. 2 JOIN + WHERE) занимает ~0,230 сек. После добавления двух индексов менее 0,001 сек. В 200 раз быстрее.
Для нужд одного проекта пишу класс-кэшер который бы сторил данные в shared memory в IPC ипостаси. Велосипед нужен потому как требуемого по параметрам велосипеда найти не удалось, а из интернетов известно, что sh в работе будет быстрее чем memcached в 4-8 раз. Но вот будет ли php класс работать быстрее еще вопрос. Поэтому первое что я сделал когда велик стал пригоден для запуска на нем теста конечно же запустил этот самый синтетический тест.
Диспозиция проста. Имеем 256 элементов, размер одного элемента 8 байт, берем и тупо последовательно один за одним читаем их. Ходим при этом на localhost. 12 ms на все про все. Против 1 ms в случае sh! О да, конечно у нас "сетевой" оверхед через tcp сокет, но перевеска на unix сокет дает только 9 ms. Кстати, заодно выяснил, что memcached модуль php, в отличие от memcache модуля, не умеет unix сокеты.
Обнадеживающе. Хотя голова понимает, что при рандомном доступе на нескольких тысячах кэшей цифры будут уже другие, ведь у меня на текущий момент планируется неупорядоченный список кешей и значит сложность поиска минимум уровня O(n). Учитывая, что читаться будет сильно чаще, чем писаться, то над сортировками подумать придется.
Диспозиция проста. Имеем 256 элементов, размер одного элемента 8 байт, берем и тупо последовательно один за одним читаем их. Ходим при этом на localhost. 12 ms на все про все. Против 1 ms в случае sh! О да, конечно у нас "сетевой" оверхед через tcp сокет, но перевеска на unix сокет дает только 9 ms. Кстати, заодно выяснил, что memcached модуль php, в отличие от memcache модуля, не умеет unix сокеты.
Обнадеживающе. Хотя голова понимает, что при рандомном доступе на нескольких тысячах кэшей цифры будут уже другие, ведь у меня на текущий момент планируется неупорядоченный список кешей и значит сложность поиска минимум уровня O(n). Учитывая, что читаться будет сильно чаще, чем писаться, то над сортировками подумать придется.
ЦОД под Самарой Мегафон строил долго, упорно и дорого. Как житель Самары я этак с годик назад пытался даже выяснить, что почем и в каком виде. И даже задавал этот вопрос через форму связи, но, как это у нас зачастую бывает, на ответ глубоко положили. А между тем ЦОД оказывается уже открылся и даже предоставляет некоторые услуги. Причем информация об этом представлена в лучших совковых традициях. Есть коло, есть дедики, виртуалки и даже сасы с облаками, только вот ценники к этому, исключая виртуалки, стыдливо не означили. Или может они не привыкли смотреть на цены и даже не знают о существовании данного атрибута у товара? Как знать... сразу вспоминается общий газ и "мечты которые сбываются", но явно не у нас.
Но я отвлекся. На виртуальные серверы табличка есть, ОСью указана винда. Можно сравнить с тем же OVZ-6 от fastvps.ru на котором я сейчас сижу. И так конфиг OVZ-6: 1700 Mhz, 16 GB хард, 600 MB ОЗУ под OpenVZ за 824 рубля за отлично работающий сервак с root доступом. Что выходит у Мегафона?
CPU (процессор): за каждые 100 МГц., в час 15 копеек
HDD (жесткий диск): за 1 Гб, в час 3 копейки
RAMM (оперативная память): за 32 Мб, в час 1 копейка
Белый IP-адрес за один выделенный ip-адрес: в сутки 12 рублей
Соберем из этого близкий конфиг на апрель (30*24=720 часов):
CPU: 100 МГц * 17 = 1700 МГц, 17 * 0,15 руб * 720 часов = 1836 руб/мес
HDD: 1 Гб * 16 = 16 Гб, 16 * 0,03 руб * 720 часов = 345,6 руб/мес
RAMM: 32 Мб * 19 = 608 Мб, 19 * 0,01 руб * 720 часов = 136,8 руб/мес
IP: 12 руб * 30 = 360 руб/мес
ИТОГО: 2678,4 рублей/мес.
2678 рублей за хрен знает еще как работающий сервер с хрен знает каким техсупортом. За эти деньги в фасте можно взять уже не виртуалку, целый дедик. Нанотех, национальная операционная система говорите, да?
Но я отвлекся. На виртуальные серверы табличка есть, ОСью указана винда. Можно сравнить с тем же OVZ-6 от fastvps.ru на котором я сейчас сижу. И так конфиг OVZ-6: 1700 Mhz, 16 GB хард, 600 MB ОЗУ под OpenVZ за 824 рубля за отлично работающий сервак с root доступом. Что выходит у Мегафона?
CPU (процессор): за каждые 100 МГц., в час 15 копеек
HDD (жесткий диск): за 1 Гб, в час 3 копейки
RAMM (оперативная память): за 32 Мб, в час 1 копейка
Белый IP-адрес за один выделенный ip-адрес: в сутки 12 рублей
Соберем из этого близкий конфиг на апрель (30*24=720 часов):
CPU: 100 МГц * 17 = 1700 МГц, 17 * 0,15 руб * 720 часов = 1836 руб/мес
HDD: 1 Гб * 16 = 16 Гб, 16 * 0,03 руб * 720 часов = 345,6 руб/мес
RAMM: 32 Мб * 19 = 608 Мб, 19 * 0,01 руб * 720 часов = 136,8 руб/мес
IP: 12 руб * 30 = 360 руб/мес
ИТОГО: 2678,4 рублей/мес.
2678 рублей за хрен знает еще как работающий сервер с хрен знает каким техсупортом. За эти деньги в фасте можно взять уже не виртуалку, целый дедик. Нанотех, национальная операционная система говорите, да?
Наши дни. Два человека. Похороны третьего.
1941 год. Четыре друга. Войны еще нет, но они понимают, что она будет. И что вернуться назад не все.
Два места. Два временных плана. Одни и те же люди и расстояние в полвека. Достаточно незамысловатый сюжет, но даже самый простой сюжет созданный качественно, и смотрится отлично. В общем любителям душещипательных историй с переплетением судеб героев смотреть обязательно.