WordPress Update

В ответ на лытдыбр Ахила, хочется сказать, что последний апдейт WordPress меня совсем не порадовал. Я привык, что я обычно в Fantastico жму кнопку и все живущие у мну блоги апдейтятся, а тут нет. Никакой автоматизации, из-за введения двух новых параметров в конфиг-файл, для того чтобы все заработало “из коробки” нужно зайти ручками в текущую рабочую базу блога и там поменять для каждого поля имеющего collation c latin1_swedish_ci на utf8_general_ci.
Вообщем, мне на 2 часа хватило, чердак Ахила я оживил, с остальными как-нибудь уж потом разберемся.

Еще раз для популяризации Руби

Пополняя свою коллекцию полезных скриптов, в добавок к Javascript-у, YAML-скрипту и Listing-cкрипту сегодня написал еще один Watermark-скрипт.
Как понятно из названия, он берет все jpg файлы из текущей папки и добавляет к ним одно изображение. Очень удобно для пакетной обработки файлов: можно поставить на все изображения URL вашего сайта, чтобы люди знали откуда сие добро взято.
Код простой, работает консольно без всякого вывода, однако для его запуска потребуется RMagick, а следовательно и ImageMagick тоже. Если вы используете нормальный сервер или одну из правильных OS, то проблем возникнуть не должно.


require 'RMagick'
wtm_file = 'watermark.png'
wtm = Magick::Image.read(wtm_file).first
Dir.open('./').each do |file|
    next if file[-4..-1] != '.jpg'
    next if file =~ /^..?$/
    
    image = Magick::Image.read(file).first
    image.composite!(wtm, Magick::CenterGravity, 
                                Magick::HardLightCompositeOp)

    out = file.sub(/./, "-wm.")
    image.write(out)
end 

Буду благодарен любым комментариям.

Битва за образование: Final Round

Итак, я пришел к финишной прямой высшего образования. Но кроме длинной дистанции позади, впереди еще маячит заключительное сражение этого триатлона: бакалаврская работа.
В чем проблема? Нужна идея по изменению размера изображения. То есть какая-то модификация стандартного метода, чтобы работало лучше чем оригинал.
Объясняю на пальцах.

Есть картинка и ее увеличение.
Resize

Нужна идея алгоритма, как находить те самые 1ый, 2ой и 3ий пиксель, которых не хватает. Механизм должен быть итерационным (то есть, несколько шагов) и базироваться на сплайн-интерполяции.
Уже испытано 2 метода:

– Сплайн-функцией горизонтальных, вертикальных и диагональных пикселей находятся 1, 2, 3. После чего значение пикселя 0 корректируется в сторону среднего арифметического при помощи некоего коэффициента k. Постулируется то, что среднее арифметическое 0, 1, 2 и 3 должно быть равно исходному значению 0. Результат: после незначительного количества итераций приходим к красивой шумной стабильной картинке, где нифига не понять.

– Сплайн-функцией горизонтальных, вертикальных и диагональных пикселей находятся 1, 2, 3. Значение пикселя 0 корректируется на основании того же постулата “среднее арифметическое 0, 1, 2 и 3 должно быть равно исходному значению 0”. Результат: при переходе от темной границы к светлой, цвет нулевого пикселя уходит в область отритцательных величин и утаскивает туда остальные.

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

Насколько тебе подходит твоя работа?

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

  1. Знаю ли я, что от меня ожидается на работе?

  2. Располагаю ли я материалами и оборудованием, необходимыми для правильного выполнения моей работы?

  3. Есть ли у меня возможность ежедневно заниматься на работе тем, что я умею делать лучше всего?

  4. Хвалили ли меня за хорошо сделанную работу в последние 7 дней?

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

  6. Есть ли на работе человек, который поощряет мой личностный или профессиональный рост?

  7. Считаются ли на работе с моим мнением?

  8. Позволяет ли миссия компании чувствовать важность моей работы?

  9. Считают ли мои коллеги своим долгом выполнять работу качественно?

  10. Работает ли вместе со мной хотя бы один из моих лучших друзей?

  11. Беседовал ли кто-нибудь со мной за последние 6 месяцев о моем прогрессе?

  12. Были ли у меня за последний год возможности для учебы и развития?

Итого, 7 из 12. Не самый лучший вариант, но могло бы быть и хуже. Во всяком случае, думаю что многие из ответов имели отритцательный ответ просто потому, что я в коллективе не полностью, а только одной ногой. Чтоже, посмотрим что будет через пару месяцев.

Ням-ням, YAML!

Сегодня я торжественно финишировал со сдачей всех своих долгов, успешно отчитавшись по “Электронной коммерции”. Самое интересное, как обычно было на ТКПО у С. А. Орлова. Надо было написать тестовый модуль, для прогонки определенного кода. Поскольку кроме ruby других интерпретаторов не держу, а всякие Delphi/Dotnet долго и неинтересно писал его на ruby. Вынес тестируемый кусок в отдельную функцию, и положил в папку скрипта простой файлик в виде:


- price: 50
  discount: 10
  result: 45

- price: -20
  discount: 10
  result: -1

А дальше сам модуль:


tc = YAML::load( File.open( 'testcase6.yml' ) )
tc.map do |m|
 puts "Result is "+"%3.2f" % discount(m).to_f
end

Коротко и прикольно. Единственное, что могу сказать: не забывайте о пробелах. Иначе, вместо красивого хеша, каждый тестовый вариант будет всего лишь стрингом, с которым конечно можно работать, но гемморою не меньше чем в delphi.
Подробнее о YAML:

Пирожок с привокзальной площади

Вчера абсолютно случайно увидел такую штуку, как screencast создания блога на cakephp за 25 минут. На самом деле, мувик гораздо более взбаломошный, чем тот, который сделан ребятами из Ruby On Rails комманды.
Что же это такое – cakephp? Это просто закос на известный фреймворк, написанный на php. C одной стороны перспектива отказаться от изучения ruby делает его более массовым, однако в отличии от старшего брата, в нем нет ни системы тестирования, ни собственного development server-a, ни автоматических механизмов развертывания приложения. В общем, после подробного изучения предложенных скринкастов, я понял, что если rails – это обед в вагоне-ресторане, то cakephp – пирожок с привокзальной площади. Мне идея изучения данной схемы показалась очень надуманной: полнофункциональный OO-язык всегда будет полезнее чем набор макрорасширений, но возможно кто-то захочет сделать что-то очень быстро. А ведь местные хостинги совсем не радуют нас условиями: на большинстве из них ssh-доступ это уже Advanced Level, не говоря о возможностях установки собственных модулей для apache.
Кстати, грядет 1 мая, праздник известный многим блогерам, как CSS Reboot. Кроме смены дизайна, я планирую и смену названия блога, поскольку моя борьба за высшее образование подошла к финальному сражению. Как вы считаете, стоит ли менять “Дневник борца за высшее образование” на что-нибудь вроде “Ежедневник IT-война”? Может быть у вас есть предложения по смене названия? Всегда готов выслушать ваше мнение в комментариях к данной статье.