Kafelkuj mocno
Tiwiling window menagers to rodzina menadżerów okien które starają się maksymalnie wykorzystać przestrzeń dostępną na pulpicie poprzez automatyczne rozmieszczanie okien.
Dlaczego jest to takie fajne?
Pozwalają nam zrezygnować z dekoracji oraz „chwytnych” krawędzi zapychających niepotrzebnie przestrzeń na ekranie. Często pracujemy na zmaksymalizowanych oknach albo marnujemy czas na umieszczenie kilku okien obok siebie. Sam łapałem się na powtarzalności czynności, które odpowiednio pomyślany WM może zrobić za mnie.
Z czy to się je?
Wybór menadżerów dla X11 jest ogromny. Awsome, xmonad, DWM, itp. Zwykle są to minimalistyczne rozwiązania, czy wręcz „biblioteki do pisania własnych WMów”. Zabawa głównie dla nerdów. Trzeba napisać konfigurację, wybrać szablony kafelkowania, opisać zachowanie okien, itd. (moja xmonadowa dostępna jest na githubie). Może wyglądać strasznie.
Ajajajaj.
Nie lękajcie się, bowiem niektóre z nich będą się integrować z waszymi środowiskami graficznymi! Takiego XMonada można podpiąć do Gnome lub KDE i wszystko działa. Ja wybrałem jednak podejście bardziej minimalistyczne. Używam tylko niewielki podzbiór tego co DE udostępniają, więc postanowiłem sam sobie to skonfigurować za pomocą dostępnych, mniejszych programów. Używałem Gnome 3 z powodzeniem, jednak ponad połowa oferowanej funkcjonalności mnie nie interesowała Skończyłem na SLiMie + tym wszystkim co jest uruchamianie w moim xinitrc.
Wiem, że wiecie, że to tylko pretekst by się podzielić zrzutami ekranu.
Tak więc łapcie:
Te paski na dole i u góry to xmobar.
Prosty rootkit dla Linuksa
Praca powstała na przedmiot Oprogramowanie Systemowe. Opisuje implementację rootkita dla Linuksa zrealizowanym na wysokim poziomie (przenośność między architekturami). Głównym celem było poznanie jądra Linuksa i nauka pisania modułów.
Rootkit jest zdolny do ukrywania plików, procesów i samego siebie.
Kod: GitHub
PDF: paper.pdf
Wygodne skalowanie CPU
Jako podstawę do skonfigurowania cpufreq polecam wpis na wiki ArchLinux.
Mam zainstalowane cpufrequtils, które przy starcie systemu ustawia mi governora na conservative, brakowało mi jednak wygodnej zmiany maksymalnej częstotliwości procesora w czasie pracy. Nie chciało mi się wklepywać co kwadrans sudo cpufreq-set -u xx w terminalu, powstał więc skrypt. Oryginalnie używałem go w terminalu, później postanowiłem zbindować go pod klawiaturę.
cat ~/.bin/cpu
#!/bin/bash FILE=$(basename "$0") FREQ="" case "$1" in "max") FREQ="2.0G";; "med") FREQ="1.2G";; "min") FREQ="0.8G";; *) echo "$FILE max|med|min"; exit 0 esac gksudo "cpufreq-set -u $FREQ" notify-send -u critical -i hardinfo "Maximum CPU frequency is now ${FREQ}Hz"
notify-send daje nam ładną, graficzną informację o zmianie ustawień.
-u critical zapewnia nam, że powiadomienie w Gnome 3 nie zostanie zwinięte, musimy w nie kliknąć. Zapobiega to gromadzeniu się notyfikacji w trayu.
Aby nie wpisywać co chwilę hasła do gksudo można dodać odpowiednią regułę do sudoers
user_name ALL= NOPASSWD: /usr/bin/cpufreq-set
Nie pozostało nic innego jak w naszym WMie przypisać skróty klawiszowe do wywołań skryptu z opcjami min, med i max.
Ja preferuję CTRL+META+[ASD]
Rails + strefy czasowe
Domyślna strefa czasowa:
config/application.rb
config.time_zone = 'Warsaw'
Preferencje użytkowników:
Dodaj pole timezone do modelu.
walidacja w modelu
validates :timezone, :inclusion => { :in => ActiveSupport::TimeZone.all.map(&:name) }
widok
<%= label_tag t('users.form.timezone') %> <br/> <%= time_zone_select(:user, :timezone) %>
app/controllers/application_controller.rb
before_filter :set_user_time_zone protected def set_user_time_zone Time.zone = current_user.timezone if logged_in? end
Rails app + Git revision na stronie
Podanie bieżącej wersji aplikacji gdzieś na stronie jest przydatne – dodatkowe informacje przy zgłaszaniu błędów + lanserski efekt.
Bardzo często serwujemy aplikację wprost z repozytorium Gita, więc czemu nie podać rewizji?
Użyjemy git describe, które wyświetla wersję w postaci:
ostani_tag-odległość_od_taga-początek_sha1
Z przełącznikiem --dirty dodaje na końcu -dirty jeśli working tree nie jest czyste.
(musi być przynajmniej jeden tag w repozytorium)
Wydobądźmy interesujące nas informacje raz, przy ładowaniu aplikacji.
lib/git_info.rb
module GitInfo BRANCH = `git status`.split[3] REPO_VERSION = `git describe --dirty` end
Można to zrobić za pomocą gemu grit, jednak zrezygnowałem z dodawania zależności.
Rails 3 nie ładuje automatycznie plików z lib/. Można go załadować pojedynczo lub włączyć ładowanie wszystkiego z lib:
config/application.rb
config.autoload_paths += %W(#{config.root}/lib)
app/views/layouts/application.html.erb
...
<div id="footer">
<div id="version">
<span id="branch"><%= GitInfo::BRANCH %> branch</span>
<span id="revision">
rev.
<span id="number">
<%= GitInfo::REPO_VERSION %>;
</span>
</span>
</div>
</div>
...+ trochę magii w CSSie i otrzymujemy przyjemny rezultat z początku wpisu.
Gitolite + Redmine
Github:
https://github.com/ivyl/redmine-gitolite
Historia:
Potrzebowałem czegoś co dałoby mi dostęp do repozytoriów Gitolite z poziomu Redmine.
Powszechnym podejściem jest ustawianie zadań crona, które co jakiś czas uaktualniają lokalną kopię repozytorium do której dostęp ma Redmine.
Problemem jest ręczne dodawanie uprawnień i pamiętanie o gwarancji dostępu dla użytkownika uruchamiającego Redmine.
A co z zarządzaniem kluczami dla różnych użytkowników? Co z automatycznym nadawaniem praw do projektu?
Znalazłem dwa rozwiązania – zaniedbane i niekompatybilne ze sobą.
https://github.com/kahseng/redmine_gitolite_hook
https://github.com/jhogendorn/redmine-gitolite
Pierwszy dawał hooka umożliwiającego automatyczne aktualizowanie lokalnej kopii repozytorium przez redmine,
drugi umożliwiał zarządzanie gitolitem (stare pliki konfiguracyjne, nie działał).
Przysiadłem nad nimi w wolnych chwilach i tak powstał mój redmine-gitolite.
Zachęcam do testowania/używania.
Wszelkie potrzebne informacje w README
„Programming in Scala” za darmo!
Od jakiegoś czasu, za darmo dostępna jest pierwsza edycja „Programming in Scala”. Nie wiem jak to przeoczyłem. Zachęcam do lektury (pisana m.in. przez samego Oderskyego).
db4o
Kolejna prezentacja przygotowana na koło naukowe. Tematem jest otwarta, obiektowa baza danych. Tym razem w showoffie. Może być dziwnie wyświetlana na operze (FF4 i Chromium radzą sobie bez problemów).
http://presentations.hiler.pl/db4o/
Edit:
Teraz dostępna na Issuu oraz jako PDF
GTK on Brodway
Ciekawa rzecz. Powodów atrakcyjności nie trzeba opisywać.
Trzeba sprawdzić jak wyglądają ilości przesyłanych danych.
gedit-mate żyje!
Pamiętacie gedit-mate, zestaw pluginów/themów/itp. do gedita umilających programowanie? Okazuje się, że żył przez pewien czas własnym życiem.
Dorobił się 59 watchów i 9 forków. Kilka osób zadbało o aktualizację i nowe pluginy. Jestem dumny.
Ostanio zainteresowałem się nim ponownie. Dodałem zmiany zrobione przez innych do oryginalnego repozytorium. Niedługo przetrzebię pluginy i wydzielę niekompatybilne z nowszymi geditami (albo spróbuję ukompatybilnć). Znalazłem przypadkiem repozytorium pluginu gedit-run, którego zostawiłem w połowie rozgrzebanego. Wypadało by dokończyć.
Ostatnio stałem się bardziej sumienny z pracą nad darmowymi projektami, więc możecie liczyć na kontynuację.


Subskrybuj komentarze tego wpisu
