Tag Archives: programozás

Hacking Rukkola, avagy bookmarklet a nem happolhatóak elrejtésére

Szóval elindult a rukkola.hu, közösségi könyvcserélde, remek dolog, próbáljátok ki, felteszitek a megunt könyveiteket, és cserébe szerezhettek másoktól hasonlókat. A böngészés a feltett könyvek között egyelőre még nem tökéletes, engem például borzasztóan zavar, hogy a kollekciók böngészésénél (szerk: és keresésnél) nincs olyan nézet, amikor csak azokat a könyveket látom, amikre ténylegesen lecsaphatok.

Összedobtam hát gyorsan egy bookmarkletet erre. Chrome Extensionnek indult, de nem érzem elég nagynak, hogy megérje berakni a saját App Storejukba, valamint sóher vagyok kifizetni az öt dollárt érte egyelőre, majd ha még lesz pár ilyen rukkola-módosításom, amit már érdemes felrakni. Mindenesetre nincs más dolgoktok, hogy felrakjátok a bookmarklet oldaláról. Lapozni a Tovább gombbal lehet, még az oldalakat is mutatja. Update: nem kell semmit kattintgatni, van végtelen görgetés.

Update 2: A bookmarklet frissült és saját oldalt kapott, innen rakhatod fel.

A mostani megoldásnak megvan az a hátránya, hogy ha átkattintasz egy könyvre, akkor sajnos kezdheted elölről. Ez egy 0.0.12-es változat, a 0.0.23-ben majd ezt is áthidaljuk valahogy remélhetőleg és/vagy egyszer a távoli jövőben ha lesz Rukkola API, majd arra fogunk építkezni.

A teljes kód fent van a githubon természetesen. Könnyen megoldható lenne, hogy az összes oldalt betöltse egyszerre, de ezt nem szeretném, mert feleslegesen terhelném vele a rukkola szervereit, amik amúgyis elég lassúak tudnak lenni sajnos sokszor. Esetleg a jövőben valamiféle végtelenscrollozást belerakok, és akkor a Továbbra kattintgatást megússza az ember. Van végtelen görgetés!

És egy before-after kép, avagy előtte:

És utána:

(P.S.: RSS-ből valószínű biztosan nem fog működni a bookmarkletes dolog, szóval ha ezt a Google Readerben olvasod, át kell hozzá kattintani)

(P.P.S.: A bookmarklet remekül alkalmazható keresésekre is.)

iframek es popupok (toredekek a fejleszto naplojabol)

Van egy iframed, abbol nyit a felhasznalo egy popupot, kulso webszolgaltatassal valo autenikalas celjabol, adsz neki egy callback URL-t, ami viszont ugye a popupba iranyit vissza, te viszont szeretned, ha az iframe tartalma lecserelodjon, majd bezarodjon a popup. Hogy csinalod? Ugy, hogy egy ilyesfajta HTML-t (es benne levo js-t) adsz meg callbacknek:

<html>
  <head>
    <script type="text/javascript">
      var close_and_redirect = function() {
        if (opener && !opener.closed) {
          opener.location.href = "http://localhost:9610/done";
        }  
        window.close();
      }
    </script>
  </head>
  <body onload="setTimeout('close_and_redirect()', 500)">
    Yay, logged in! Closing...
  </body>
</html>


(Itt talaltam meg vegul.)

vim

Nem tudom mikor kezdodott igazabol. Regen, maces koromban en is TextMatet hasznaltam persze, like all the cool kids in town, akkor foleg Rubyhoz, meg a Railses kiserletezeshez. Kesobb jott a Windows es Ubuntu kozott orlodo korszakom, amikor leginkabb semmit, mert sokkal keveset programoztam, de talan akkor talaltam meg ezt a ket blogpostot: Rails on VIM illetve Rails on Windows.

(wow, ez tenyleg ket eve volt mar? Repulazido es egyeb kozhelyek.)

Ekkor mar kiserletezgettem a vimmel, mindenesetre a ket tutorialt vegigtoltam, felraktam a teljes akitaonrails vimfilesot, jatszottam a vimtutorral (szegyellem, de azt azota se toltam teljesen vegig), nezegettem cheat sheeteket, olvastam itt-ott-amott hogy ez tenyleg milyen jo, ugyetlenkedve hasznaltam, neha, es aztan bizonyos kornyezetekbe (pl. szervereken amiket adminisztralok) be is alltam ra, mint szovegszerkeszto, kicsit esetlenul, tudtam max egy tucat parancsot, de mar ugy is kenyelmesebb volt, mint pl. a nano.

Igy teltek az evek, kozben a cegbe’ ujra lett egy macem, vissza is estem TextMatebe ha kodolni kellett valamit, otthon pedig atalltam Ubuntura, ha nagyritkan kodolni kelett, akkor, helyenkent szerencsetlenkedve, de vimben csinaltam. Aztan gazzsal megirtuk harom ejszaka alatt a bullshitbingot (ne kattintsd le, erre a kodra egyikunk se igazan buszke), es akkor ledozeroltam az aktualis harmincpluginos internetrolszedett vimconfigom, lenyultam gazs huszsoros configfajljat, beraktam meg par dolgot, es mar-mar produktivan dolgoztam benne.

Fast-forward par honap, eljo aprilis masodik fele, zajlik az elet (hajjaj, de meg mennyire), mindenesetre tobbszor felvetettuk egymasnak gazzsal, hogy mostmar meg kene rendesen irni a bingot — es ezt ismetelten egy masik, hamarosan megirt postra hagyom, mert nagyon elkalandoznek –, elkezdtunk mindenfele dolgokat kodolni, en gyakorlatilag vegigkodoltam a teljes husvetot, es valami tortent, mar nem vagytam vissza TextMatebe, mar jol ereztem magam. Ha valami feature kellett, on-the-fly felraktam (a pathogen + git submodule kombo nagyon utos), es most bo ket het utan itt tartok, van egy ketszeresere nott vimrc, osszejott idokozben vagy’ 10 bundle (amiket viszont hellyel-kozzel tenyleg hasznalok), es azzal, hogy tenyleg napokat kodoltam at, megtanultam igazan ertekelni azt, ha van egy jo szovegszerkeszto, ami alapvetoen tenyleg a keze ala dolgozik, es ugy szabod testre, ahogy te akarod.

Itt van peldaul a vim 7.3 legnagyobb ficsorje, amit par napja talaltam meg a hires Coming home to vim cikkben, az undofile. Ha bekapcsolod (most. kapcsold. be.), akkor onnantol kezdve, hogy eloszor letrehoztad/megnyitottad az adott filet, az osszes letezo valtoztatasod ever kovetve van, es termeszetesen visszavonhato. Akkor is, ha azota hatszor ujrainditottad a geped es tizenotszor a vimet. Gyakorlatilag kapsz ingyen egy automatikus mini-verziokezelest, foleg, hogy a vimnek nem szimpla undoja, hanem undo treeje van, azaz ha visszavontal ket dolgot es csinaltal egy masikat utana, attol meg nem veszett el az a ket dolog, amit te visszavontal.

(A kovetkezo az lesz valoszinuleg, hogy ezt eggyel tovabb viszem, es az undofajlokat is berakom az adott git repoba es igy szinkronizalom gepek kozott, de meg nem dontottem el teljesen, mert a repoba szemetelesnek erzem valahol)

Ezt igy viszont nehez nekem elsore igazan effektiven hasznalni, van erre viszont a Gundo nevu plugin, ami vizualizalja az undo treet, es a kovetkezot kapod, mutatom, egyszeruen gyonyoru (az egerkurzor senkit ne tevesszen meg, a valodi kurzor a [9]-estol balra levo o-n all):

De tudnek meg lelkendezni meg peldaul olyan aprosagokrol, mint peldaul a vim-coffee-script CoffeeCompile funkcioja, amit be lehet loni ugy, hogy a kijelolt coffeescriptnek megmutatja a javascript outputjat gombnyomasra (koszi LacKac!). Vagy a kulonbozo splitek. Vagy…

Es persze, ez csak egy eszkoz, de mikor hasznalod tiz oran keresztul egy nap, akkor ez mind-mind fontos.

<ESC>:wq

Koltozes a felhobe

Ket dolog tortent, az egyik, hogy mostanaban folyton elszallt a php-nginx kombo egyszercsak a 64 megas VPS-en, amit anno osszeraktam. Frissitettem, megneztem a konfigokat, megis, egyszercsak elhalt az egesz, kezzel kellett ujrarugni. A masik dolog, ami tortent, hogy mikor tegnap este ismetelten kaptam a pingdomtol emailt, hogy “DOWN alert: blog (blog.ktamas.com) is DOWN”, akkor azt mondtam, hogy oke, eljatszotta az utolso lehetoseget is a helyzet, holnap (azaz ma) uj VPS-t keresunk.

Azaz, kerestunk volna, mert ma reggel kaptam egy emailt, ami igy kezdodott:

“You have been selected to enter the PHP Fog Beta program!”

A masik dolog, ugyanis ami mostanaban tortent, az az volt, hogy egyre-masra bukkannak fel a hacker newson Heroku-szeru cloudos PaaS-ok (Platform as a Service), eloszor talan pythonhoz-djangohoz, majd kesobb mindenfele mas programnyelv/framework/egyeb kombohoz. Mint anno a betas Heroku, ok is altalaban ingyenes betakra epulnek, hogy az emberek jol kibetatesztelik az ingyenes/olcso szolgaltatasert cserebe az egeszet. Raadasul a deployment szinte kivetel nelkul giten keresztul megy, ami iszonyat kenyelmesse teszi a dolgot, mostanaban egyre tobb projekten dolgozok amihez amugyis azt hasznalom (itt a githubom, nem disznolab). De eloreszaladok, ez egy masik blogposzt temaja lesz, remelhetoleg hamarosan.

Szoval kaptam PHP Fog betat, amire miert is ne alapon bejelentkeztem meg circa szuk ket honapja, megcsinaltam az accountot, csinaltam egy uj wordpress appot (fel evig ingyenes a legkisebb csomagban, aztan majd meglatjuk), kidumpoltam az adatbazist a regi szerveren, kimasoltam a gepemre a regi wordpress mappammal egyutt, git-cloneoztam a repot arrol az URL-rol, amit a PHP Fog adott nekem, felulirtam a wp-content mappat a regivel, behuztam PhpMyAdminbol a regi adatbazist, eeees… futottam meg egy kort a supporttal, mert hiaba pusholtam a szerverre, hiaba mondta h sikeres, a friss wordpress telepites nem nagyon latta a repoba rakott fajlokat. Mindenesetre dicseretes, hogy a szupportosok szombat ellenere par ora alatt valaszoltak es megjavitottak a helyzetet, atraktam a domain A-rekordjat, ujraimportaltam a DB-t mert azota irtam egy posztot, es most meg eppen ezt irom.

A felho tehat borzasztoan kenyelmesse tesz dolgokat, ami persze nem jelenti azt, a helyzet felhotlen lenne (elnezest), az elmult napokban is voltak erre peldak, ugye, mindenesetre programozooldalrol tenyleg iszonyat kenyelmesse tesz dolgokat, hogy (kis tulzassal) git push, es szevasztok. A bennem levo controlfreak rendszergazda most epp el van tehat nyomva, de biztos ki fog jonni egyszercsak…

Hacking netpincér

Van ehhez hosszabb háttérsztori is, de a lényeg az hogy kellett volna valami ami berendezi a netpincéren a szállítókat szállítási idő szerint. Ebből lett egy bookmarklet.

Egyelőre nem tudom, hogy lehet megcsinálni úgy, hogy ide is beilleszthessem, úgyhogy elkészíteni a következőképp lehet: ennek az oldalnak a tartalmát beilleszted ide, majd az eredményt a vágólapra dobod. Csinálsz egy új bookmarkot, adsz neki egy hangzatos nevet, es a Location az lesz, hogy javascript:[a kód beillesztve ide]. Elmész a Netpincér oldalára, kiválasztod a szállítót, megnyomod a gombot, és ta-dám*, máris szállítási idő szerint vannak rendezve. Valahogy igy:

 

Amúgy a kód fent van a githubon, tessék engem villázni. Lekódoltam azt is, hogy szűrni lehessen a boldogórás szállítókra de az azóta beépített fícsör lett. Remélem ez is az lesz egyszer.

*P.S.: Igen, a cuccnak kell kb. 2-3 masodperc lefutnia, mert a) betolti eloszor a jqueryt b) sajnos ki kell szednie es visszaraknia a DOM kb. felét amit a böngészők egyelőre nem viselnek jól. Ha valaki tud jobb megoldást, forkra fel.

Miért fogunk a jövőben excelt is Rubyban programozni?

Ruby:

require ‘win32ole’
excel = Win32ole.new(“Excel.Application”)
excel.visible = true
wb = excel.workbooks.add
ws = wb.activesheet
ws.range(‘A1:B5’).each do |cell|
cell.value = “Hello, World”
end

versus

using Microsoft.Office.Interop.Excel;
[…]
var excel = new ApplicationClass();
excel.Visible = true;
object missing = System.Reflection.Missing.Value;
var workbook = excel.Workbooks.Add(missing);
var range = excel.get_Range((object)”A1″, (object)”B5″);
foreach (Range r in range.Cells) {
r.Activate();
excel.ActiveCell.Value2 = “Alma”;
}

Na, melik a kevésbé gány megoldás?

(A szerkesztőségbe várjuk a jobb C#-os megoldásokat.)

Bibliaolvasó

Papírformában már régóta léteznek az ún. Biblaolvasó kalauzok, amelyek általában arra szolgálnak, hogy egy adott rendszer szerint végigvezesse az embert egy év alatt a Biblián. Most azonban LacKac megcsinálta ugyanezt online formában is, egyelőre a Károli-féle fordítással és nem utolsó sorban új, izgalmas és bleeding edge technológiákkal, kulcsszavakban: Edge Rails, HAML, SAAS, Compass, CouchDB. Bővebb infó erre.

P.S: természetesen van RSS feed is :)