Custom post type в многоезичен WordPress се извежда с всичките си преводи

Случи ми се следната ситуация при работа върху сайт на клиент:

WordPress 3.2.1 с qTranslate и 3 езика има разширение за локации (Basic Google Maps Placemarks), което обаче при извеждането на списъка с всички локации, които реално са custom post type, ми изкарва на всяка локация и трите й заглавия, т.е. заглавието и на трита езика.

Причината за проблемът е, че реално това извеждане на заглавието се извежда при прихващането на shortcode нейде из публикациите ми, заради което не се хваща qTranslate куката, която при намирането на <!–:ХХ–> таговете не избира само единия запис с текущия език. Заради което на страницата се показват и трита ми превода. Решението беше елементарно, но си го записвам, за да мога да го намеря следващия път, като попадна на подобна грешка.

В кода на разширението, което извежда списъка с публикациите от новия тип (placemarks в моя случай) се намира редът, който извлича заглавието или какъвто и да бил друг текст, подлежащ на превод. Извикването на функцията се вкарва като параметър на функцията qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage, която всъщност ще избере превода за текущия език, а останалите варианти ще премахне. В моя случай това се случи така:

qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($p->post_title)

MySQL server has gone away (error #2006)

I had to migrate a web site from one server to another, having phpMyAdmin as the db administration tool and the db dump from the old server. Problems I faced were trivial, yet I wasted plenty of time on fixing them.

  • File is bigger than the limit for uploaded files. – Thats easy, if you got access to the configuration file for your PHP installation: php.ini. Just edit the value of the variable upload_max_filesize = 10M. Value should be a bit above your file’s size.

So far, so good, I did that and after restarting the web server (apache or IIS) you get in your phpMyAdmin the new limit next to the upload button. Well, that’s fine, but after I tried to upload my (obviously) small 2Mb archive of the dump, I got to the following error message:

#2006 – MySQL server has gone away

Damn! Quite a lot of people did not have a clue what to do with that. Someone said something about max_allowed_packet variable… so I checked it out (SQL query):

select @@max_allowed_packet

Size of that was 1048576, which was a bit smaller than my dump, bot compressed or in plain sql. What I did was changing it to something bigger. Like adding a 0 at the end:

set global max_allowed_packet=10485760

And that fixed my problem. After the import I returned the old value to 1048576.

Moodle RSS feed – изтритият запис не изчезва!

На последния хакатон в Лаба, а именно July Coding, седнах да посвърша една задачка от клиент, която се състоеше в това да изтрия последната новина от техен форум в moodle система и над кутийката, агрегираща тия новини да сложа някакъв линк, заместващ новината и съответно стоящ най-отгоре.

Изтрих аз новината от форума, пуснах moodle/admin/cron.php, изпълни се последния, презаредих страницата с агрегирания feed… и публикацията си беше пак там. Чистене на кеш, търсене на rss.xml из файловата система и т.н. – нищо не помогна. Вътре в самия feed записът си седеше гордо и не мърдаше.

Тръгнах след 15 минути блъскане да питам форумите на moodle.org за някакъв съвет и след още 5 минутки вече си бях решил проблема. Всъщност за това нещо имаше бъг и този бъг не беше решен до версия 2.0, пък аз бях на 1.8. Тук ще измрънкам, че смяна на версията на moodle е малко по-трудно от това да си смениш националността и адреса на местижителство. Само малко по-трудно.

Но как да е, ако можете да не използвате moodle, не го правете.

Решението е всъщност заобикаляне на проблема:

Вариант 1: след като сте изтрили ненужната публикация, изтривате следващата най-горна, пускате отново cron, възстановявате последната изтрита (очаква се някъде да си пазите текста и заглавието й) и за последно пускате cron.

Вариант 2: отивате в директорията /moodledata/rss/forum/ и редактирате xml файла, който ви тормози толкова.

Адресът, на който разбрах за решението е този http://moodle.org/mod/forum/discuss.php?d=107567

WordPress + дизайн за ВелоЕволюция

От Велоеволюция си търсят 2-ма човека да им оправят сайта – http://velobg.org/:

  • графичен дизайнер за цялостна визия
  • PHP & MySQL Developer с опит с WordPress

Ако познаваш някой вело-фен, на който му се занимава казвай.

По-горното го получих като писмо от Емилиян Кадийски, другарче от ФМИ, който стартира бизнес с Вело Ателие и в същото време е гъст с по-горната организация. Не знам дали ще получите парично заплащане за работата си, но със сигурност ще се запознаете с готини хора, ще придобиете полезен опит, ако такъв ви липсва, и евентуално ще можете накрая да си разширите портфолиото с още един як сайт.

Пишете на e.kadiyski към гугълската поща за подробности.

Възстановяване на изтрити файлове от NTFS

„Изтрих си файловете без да искам, какво да правя?!“

Вероятно не е сефте да ти се случва да изтриеш нещо със Shift + Delete без да си го искал наистина. Хубавото е, че всъщност този проблем може да се разреши и в дадена ситуация да възстановиш ако не всичките – голяма част от затритите файлове.

1-во – ако токущо си изтрил файловете, НЕ ЗАПИСВАЙ НИЩО в дяла, който е държал тези файлове! Ако са били в системния дял, където е инсталирана бозата ти, най-добре директно изгаси компа. ВЕДНАГА!

2-ро – набави си Ubuntu Live CD/USB.

3-то – рестартирай си компа с вкарано CD/USB-то.

4-то – стартирай Ubuntu, без да го инсталираш.

5-то – когато зареди Ubuntu, стартирай терминала и въведи в него следната команда, в която заместиш /media/TURBO/survivors с адреса на папката, където искаш да си запазиш изтритите файлове, * с шаблона за файловете, които искаш да спасиш и /dev/sda3 с устройството, от което ще изваждаш изтритите файлове:

sudo ntfsundelete -u -d ‘/media/TURBO/survivors’ -m ‘*’ /dev/sda3

В посочената директория ще получиш всички изтрити файлове, върху които не е написано нищо ново и съответно са останали запазени. Единствения проблем е, че тези файлове се оказват струпани в една единствена папка, без да са запазили оригиналната си структура. С това се боря в момента.

Ако открия по-адекватно решение, ще подскажа!

Колко може да е зле Archos 9 pctablet

Изненадващо, на работа ми дадоха да си поиграя с една джаджа и да я разнищя, та да може колежката community manager на getlokal да цъка на нещо по-глезенко…

Та такам, мисията е да подкарам нета, фонетична кирилица и да свържа това нещо с Exchange сървър. И така като гледам, да активирам ужасТния Windows 7 Starter Edition, че ми обяснява, че is not genuine.

Първите впечатления – не мога да намеря проклетата клечка! Никъде не я намери, а за малко да изтръгна степенката за подпиране на таблета, щото тя най-много го избиваше на stylus. Е, не успях да я изтръгна, но установих, че е степенка и я вкарах в употреба. След повторно прибиране и изваждане открих, че последната маневра е безобразно трудна. Чувствам се като орангутан със сешоар.

Между другото това нещо е широко колкото моят 12″ лаптоп IBM Thinkpad x31, само дето не е толкова високо. Тегне безобразните 820 грама и… хм, от 20 минути го ползвам и вече пари от към долния десен ъгъл. Но как да е, продължаваме нататък. По спецификация това нещо държи 5 часа работа. Като махнем ДДС-то 20%, остават 4 часа. Колкото да изгледаш 2 филма или един епизод на Star Wars + три епизода на Samurai Jack. Като съм подхванал сравненията, същия онзи IBM с една нова батерия с 9 клетки също би правил 5 часа труд и творчество. Само дето той има клавиатура, че и клитор!

Всъщност това с клавиатурата е сериозен проблем. Екранът изглежда ок, но е супер тегаво да се цъка с пръсти. Трябва да повтаряш и потретваш, за да се отрази действието ти, а от време на време курсорът не е съвсем там, където си искал, след цъкването. За drag’n’drop можеш да забравиш напълно, ако си мислиш за цъкане с пръст. С нокът почти става, но и там прескача от време на време. А това, че самата виртуална клавиатура заема половината ти екран, евентуално скривайки формулярите, които попълваш в долната половина… е друг въпрос.

Продължавайки в съвсем хаотичен стил, стигам и до чуденката за хард диска. HDD в преносимо устройство като таблет? Хъ? Винаги съм си мислил, че тия дискове като го лупнеш два пъти в масата и приключват с кариерата си. Защо нещо, което ще е постоянно из разни чанти, в нечии ръце, в различни пози, употребява една такава чуплива технология? Очевидно, за да е по-евтино… и все пак не ми звучи разумно.

Прочетох и едно ревю, в което обясняват, че можете да си цъкнете клавиатура и мишка, ако не ви е удобно да пипкате по екрана… изненада! Имаме само 1 USB порт! Найс, а? Но тъй де, нека не бъдем прекалено арогантни, за сметка на това има достатъчно клекав Атом процесор, за да не се нуждае от вентилатори (1.2Гхц). Йей!

Хм… за хвалби нещо не мога да се сетя. Чак ми става гузно колко съм негативен спрямо нещастното устройство. Опитах да намеря утеха в цената му, ама и там не намерих съчувствие.

Като заключение – силно се надявам да съм помогнал на някого с избора на подобно устройство, или поне да съм предотвратил някоя необмислена постъпка, причинена от превъзходните изсмукани от пръстенцата на краката ревюта на таблета на Арчо, на които лесно се попада из нетя. Пък ще бързам по-скоро да му сложа допълнителния софтуер на това нещо, та да ми се маха от бюрото.

To be admin, or not to be admin (на WordPress сайта)

Покрай изготвянето на лекцията за сигурност в WordPress и разни дребни хакове за стягането на същата тая сигурност се сетих отново за нечий съвет да не пазим потребителя admin, пък да го преименуваме или директно изтрием, за сметка на администратор с друго име.

То всичко е много хубаво, обаче когато някой целенасочено се опитва да ти счупи сайта по елементарен начин може да разбере дали даден потребител съществува или не. Когато се пробва в wp-login.php да влезе с несъществуващ потребител, формулярът остава празен след презареждане на страницата, пък ако само паролата е сбъркана, името на потребителя остава. Съответно тази същата проверка може много лесно да се имплементира за всеки бот, опитващ се да нахълта brute force през портата на admin потребителя. И ако такъв не съществува, да се огледа сред авторите на страници, публикации и коментари, за да си намери правилния човек/потребител за продължаване на хамалските действия.

Хубаво де, аз пък правя друго. Оставям си admin-а да съществува на воля. Само му подстригвам крилцата. Мъничко. Да речем до ниво subscriber. Ta по този начин зложелателят ще губи време, ресурси, а защо не и нерви, за да нахлуе в хралупката на нашия пенсиониран admin, който вече не държи никакви отговорности, а притежава приказна 18-символна парола с латиница, кирилица, главни и малки букви, числа и поне 5 специални символа. Администраторът си има своя наследник, който обаче не пише нищо никъде (това го правят редакторите) и всички живеят щастливи и доволни.

Освен непослушните дечица с лошите скриптове.

Заобляне и засенчване чрез препарати като CSS

Другарчето Коко Данков си играе много майсторски със CSS та рекох малко да се поразровя в кода му и да видя какво мога да си намеря за мене там. Е, попаднах на готини работи, които най-вероятно и на други хора ще са им интересни. CSS не е от нещата, които бих нарекъл силна моя страна, заради което специалистите могат да пропуснат написаното по-долу като нещо, което знаят на изуст.

Пък най-после да сложа и някаква леко техническа приказка в блога.

Заобляне на ръбове (border):

-moz-border-radius: 15px; /* FF1+ */
-webkit-border-radius: 15px; /* Saf3+, Chrome */
border-radius: 15px; /* Opera 10.5, IE 9 */

Сянка на ръбове (и всякакви други обекти):

-moz-box-shadow: 0px 0px 10px #000; /* FF3.5+ */
-webkit-box-shadow: 0px 0px 10px #000; /* Saf3.0+, Chrome */
box-shadow: 0px 0px 10px #000; /* Opera 10.5, IE 9.0 */

Както можете да забележите, това са супер-дупер върховни технологии, които не всеки браузър би поддържал.

Използвайте ги съвестно и с повишено внимание!

П.П. Източникът на това безценно знание е ей тоз файл.