Fork me on GitHub


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]


Opublikowany: 24 gru 2011
Kategorie: komputery, laptop, Linux, systemy |

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

Opublikowany: 10 lip 2011
Kategorie: programowanie, Rails, Ruby |

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.


Opublikowany: 03 lip 2011
Kategorie: Git, programowanie, Rails, Ruby |

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


Opublikowany: 01 lip 2011
Kategorie: internet, Open Source, programowanie, Ruby |

„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).


Opublikowany: 21 maj 2011
Kategorie: programowanie, Scala |

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


Opublikowany: 02 kwi 2011
Kategorie: Java, Open Source, prezentacje, programowanie |

GTK on Brodway

Ciekawa rzecz. Powodów atrakcyjności nie trzeba opisywać.
Trzeba sprawdzić jak wyglądają ilości przesyłanych danych.


Opublikowany: 17 mar 2011
Kategorie: internet, komputery, Linux |

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ę.


Opublikowany: 13 mar 2011
Kategorie: Linux, programowanie, projekty |

Wprowadzenie do Actor Model

W ramach koła naukowego kontynuowałem cykl prezentacji o alternatywnych językach na JVM i Scali. Tym razem było o aktorach. Poprzednie prezentacje zostały uaktualnione/poprawione.

Aktorzy – współbieżność sterowana asynchronicznymi wiadomoścami

Open publication – Free publishingMore actor model

Opublikowany: 13 mar 2011
Kategorie: prezentacje, programowanie, Scala |

ZSH

Nadszedł taki tydzień, że mam dużo do roboty, więc postanowiłem przysiąść i zrobić coś zupełnie innego niż powiniennem – skonfigurowałem zsh porządnie. Teraz działa i jest ładnie. Postarałem się by całą konfikurację było wygodnie aktualizować i personalizować (używam na wszystkich maszynach).

Polecam wszystykim przesiadkę z basha (jesli ktoś się jeszcze nie domyślił zsh to shell) . Jest go znacznie łatwiej konfigurować. Wygodniejszy, przyjaźniejszy, ładniejszy. Spróbujcie. Przejrzyjcie przykładową konfigurację a powinniście się przekonać.

Więcej w README repozytorium na githubie (link poniżej).

zsh-config


Opublikowany: 12 mar 2011
Kategorie: Linux, programowanie, projekty |