Jeszcze jeden blog o programowaniu

Radosne twórczości leniwego programisty

Archive for the ‘Narzędzia’ Category

Instalacja fontu Consolas w Ubuntu

leave a comment »

Instalacja fontu Consolas w Ubuntu została bardzo dobrze opisana na kilku stronach, ale dla kompletności pozwolę sobie powtórzyć i skrócić.

Instalujemy odpowiednie pakiety


$ sudo apt-get install font-manager

$ sudo apt-get install cabextract

Do pliku ~/Pulpit/consolas.sh wrzucamy:


#!/bin/sh
set -e
set -x
mkdir temp
cd temp
wget http://download.microsoft.com/download/E/6/7/E675FFFC-2A6D-4AB0-B3EB-27C9F8C8F696/PowerPointViewer.exe
cabextract -L -F ppviewer.cab PowerPointViewer.exe
cabextract ppviewer.cab

Otwieramy terminal ctrl+alt+t i przechodzimy do katalogu z naszym plikiem (Pulpit). Nadajmy prawo do wykonania chmod +x consolas.sh i uruchamiamy ./consolas.sh.

Chwilę pomieli wyrzucając na ekran wykonywane instrukcje, zaciągnie archiwum CAB z fontami od Microsoftu i zapisze w katalogu temp na Pulpicie.

W terminalu wpisujemy font-manager i uruchomi się niewielkie okienko:

 

 

 

 

 

 

 

Na dole z lewej strony znajdziemy 5 przycisków; pierwszy z prawej strony pozwoli nam zainstalować nowe fonty. Wybierzemy katalog ~/Pulpit/temp gdzie powinien znaleźć kilka – między innymi te z rodziny Consolas. Wybieramy pliki pasujące do CONSOLA*.TTF, pozwalamy Font Manager na przeładowanie biblioteki i już powinniśmy mieć wybrane fonty w systemie.

Po zainstalowaniu wszystko jest niby super, ale gdy wejdziemy np. na StackOverflow zauważymy, że przykładowe źródła przedstawiane są fontem "Consolas Bold Italic" , która wskazuje na plik CONSOLAZ.TTF – mimo, że w CSS określone jest jasno „Consolas”. Nie znam dokładnej przyczyny takiego zachowania, ale rozwiązaniem tego problemu jest po prostu zmiana nazw plików w katalogu /home/USER/.fonts/Library/C/z:


CONSOLAB.TTF
CONSOLAI.TTF
CONSOLA.TTF
CONSOLAZ.TTF

na


CONSOLASB.TTF
CONSOLASI.TTF
CONSOLAS.TTF
CONSOLASZ.TTF

czyli po prostu dodanie literki Sw nazwie.

Written by filipgorczynski

2017.06.16 at 06:33:03

ffmpeg – dzielenie dużego filmu na krótsze kawałki

leave a comment »

Z nieznanych mi do końca przyczyn tańsze odtwarzacze DVD (ale te posiadające port USB) nie radzą sobie za dobrze z systemami plików innymi niż FAT32. Oczywiście, nie byłoby to aż tak problematyczne, gdyby nie fakt, że w takim systemie plików nie da się umieścić pliku większego niż 4 GB. Jak wiadomo filmy w dobrej jakości to dużo gigabajtów. Jedną z alternatyw jest podłączenie do telewizora laptopa lub Raspberry Pi i odtwarzanie bezpośrednio z tego urządzenia – większość ludzi posiada już NTFS lub ext3/ext4, więc większy plik nie będzie problemem.

Gdy jednak mimo wszystkich sprzyjających okoliczności nadal chcielibyśmy podzielić plik z filmem (np. gdybyśmy chcieli go na dyskietkach wysłać do ZUS) z pomocą przyjść może narzędzie ffmpeg i poniższe polecenia:


$ ffmpeg -i ~/The.Greatest.Movie.Ever.Sold.avi -ss 00:00:00 -t 01:00:00 -async 1 -c copy ~/The.Greatest.Movie.Ever.Sold-part.1.avi
$ ffmpeg -i ~/The.Greatest.Movie.Ever.Sold.avi -ss 01:00:00 -t 01:55:23 -async 1 -c copy ~/The.Greatest.Movie.Ever.Sold-part.2.avi

Parametr -ss HH:MM:SS określa początek – moment, od którego chcemy zacząć wycinać.

Parametr -t HH:MM:SS określa nam czas, jaki chcemy wyciąć. W przypadku pierwszego polecenia będzie to 1 godzina od początku filmu.

Parametr -async to synchronizacja audio – wartość 1 wg dokumentacji oznacza „wypełnienie i przycinanie” – w praktyce jak to działa – nie mam pojęcia :).

Parametr -c określa kodek, w przypadku podania wartości copy zostanie on skopiowany z pliku źródłowego. O ile dobrze kojarzę, możemy to zamienić na odpowiednie –vcodec i –acodec.

Inna sprawa, że nie każdy odtwarzacz DVD radzi sobie z różnymi formatami plików (np. mkv, mp4) i aby skonwertować plik z filmem z formatu MP4 do AVI może się przydać polecenie:


$ ffmpeg -i ~/The.Greatest.Movie.Ever.Sold.mp4 -qscale 0 -vcodec mpeg4 -acodec ac3 ~/The.Greatest.Movie.Ever.Sold.avi

gdzie parametr -i określa nasz plik wejściowy, -qscale 0 to ewentualna utrata jakości – nas interesuje konwersja bezstratna. -vcodec mpeg4 to kodek wideo i -acodec ac3 to kodek audio. Nie możemy podać wartości copy jak w poprzednich poleceniach ponieważ konwertujemy na inny format pliku, a przez to interesują nas inne kodeki. Na końcu podajemy nazwę pliku wyjściowego, którego docelowy rozmiar zapewne będzie trochę większy od pliku wejściowego.

Samo ffmpeg to nie tylko cięcie czy konwersja filmów, dlatego po więcej możliwości warto skierować się do pomocy tego narzędzia: ffmpeg -h full lub stronę projektu ffmpeg.org

Written by filipgorczynski

2017.06.14 at 07:57:44

SSH w Windows i komunikat „The server’s host key is not cached in the registry”

leave a comment »

Git

Git mimo utworzenia poprawnych kluczy, dodania ich do agenta (pageant.exe) i dodania klucza SSH w konfiguracji GitHub, przy próbie np.: klonowania projektu, wyświetla komunikat:


The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
Connection abandoned.
fatal: The remote end hung up unexpectedly

Ponieważ wszystko co należało zrobić – zostało zrobione, zaczęło się grzebanie i próbowanie wszystkiego co tylko mogło przyjść do głowy.

Dopiero po wykonaniu poniższego polecenia wszystko zaczęło działać jak należy:

plink.exe git@github.com

plink.exe instalowany jest np. z pakietem PuTTY.

Written by filipgorczynski

2014.10.18 at 21:28:32

Solr 4 w Windows 7 na Tomcat 8

leave a comment »

Apache SolrPoniżej przedstawiam czynności jakie musiałem wykonać w celu zainstalowania Solr4 w Windows 7 na serwerze Apache Tomcat 8.

1. Pobieramy wersję instalacyjną JDK8 odpowiednią dla naszego systemu operacyjnego (oczywiście o ile już jej wcześniej nie instalowaliśmy); dla mnie było to jdk-8u25-windows-x64.exe. Instalujemy jak każdą inną aplikację w Windows.

2. Pobieramy i instalujemy Apache Tomcat 8. Dla wygody można pobrać plik instalacyjny 32-bit/64-bit Windows Service Installer. Jako katalog instalacyjny dla Tomcat 8 wybrałem C:\dev\tomcat8.

3. Po zainstalowaniu możemy wejść w przeglądarce na adres http://localhost:8080/ w celu zweryfikowania poprawności instalacji (oczywiście określając odpowiedni port, którypodaliśmy w trakcie instalacji Tomcata). Powinniśmy zobaczyć ekran podobny do poniższego:

tomcat8

4. Zatrzymujemy usługę Tomcat: wybieramy Monitor Tomcat w menu programów Windows, w oknie klikamy przycisk Stop.

5. Ze strony domowej Solr pobieramy ostatnią wersję, ja wybrałem solr-4.10.1.zip.

6. Pobrany plik możemy rozpakować do C:\solr-4.10.1\; z tego katalogu będziemy potrzebowali tylko niewielką część.

7. Z lokalizacji C:\solr-4.10.1\dist\ kopiujemy plik solr-4.10.1.war do katalogu C:\dev\tomcat8\webapps\ oraz zmieniamy nazwę tego pliku – usuwamy numer wersji pozostawiając tylko solr.war.

8. Tworzymy nowy pusty katalog i uznajemy go za katalog domowy Solra – przykładowo C:\dev\solr.

9. Z katalogu C:\solr-4.10.1\example\solr\ kopiujemy wszystko do utworzonego przed chwilą katalogu C:\dev\solr – będziemy mieć tu m.in. katalogi bin oraz collection1.

10. Z katalogu C:\solr-4.10.1\example\lib\ext\ kopiujemy wszystkie pliki *.jar (ok 5 plików) do katalogu C:\dev\tomcat8\lib.

11. Ustawiamy wartość dla solr.solr.home. W okienku Monitor Tomcat; w zakładce Java w polu  Java Options dodajemy na końcu katalog domowy naszego Solra:

 

-Dsolr.solr.home=C:\dev\solr


12. W tym samym oknie przechodzimy do pierwszej zakładki, gdzie uruchamiamy usługę Tomcat 8 przyciskiem Start.

13. Tomcat dostępny jest pod adresem http://localhost:8080/. Solr natomiast jest dostępny pod adresem http://localhost:8080/solr/.

Solr4 Dashboard

Written by filipgorczynski

2014.10.18 at 18:28:28

Windows 7, Git, SSH agent – Could not open a connection to your authentication agent.

leave a comment »

GitPo zainstalowaniu Git, stworzeniu nowych kluczy prywatnego i publicznego oraz dodaniu ich do Bitbucketa, mimo wykonania polecenia:

git clone [url-repozytorium]

otrzymujemy komunikat:

Could not open a connection to your authentication agent.

W sieci znalazłem kilka propozycji rozwiązania problemu, ale większość działa jedynie na środowiskach nie Windowsowych i kończy się wykonaniem polecenia eval `ssh-agent`, które na Windowsie oczywiście nie działa.

Moja propozycja rozwiązania.
Pobieramy i instalujemy PuTTY, szczególnie będzie nas interesował PuTTY i Pageant. Jeśli już posiadamy zainstalowaną wersję PuTTY mogliśmy wykorzystywać PuTTYgen do stworzenia pary naszych kluczy.

Uruchamiamy PuTTY, w pole adresu wpisujemy bitbucket.org (lub github.com – w zależności od tego, który host nas interesuje), port zostawiamy domyślny, możemy zaznaczyć opcję, aby nie zamykał okienka, ale to raczej nie ma wielkiego znaczenia.
Próbujemy się połączyć z tym hostem, przed połączeniem poprosi nas o potwierdzenie, czy klucz danego hosta ma zostać dodany do zaufanych. Klikamy TAK. I tutaj już za wiele nam nie będzie potrzebne więc można wszystko pozamykać.
Uruchamiamy Pageant i ładujemy do niego nasz klucz – plik *.ppk, znajdujący się przykładowo w ~/.ssh/id_rsa.ppk).

Po załadowaniu klucza do Pageant powinniśmy już bezproblemowo móc wykonać wszelakie operacje na repozytorium: push, pull, itd.

Written by filipgorczynski

2014.09.17 at 20:14:35

cd na sterydach – narzędzie do szybkiej zmiany katalogów w konsoli

leave a comment »

Przeglądając dziś RSSy natrafiłem na genialne w swej prostocie narzędzie – przydatne szczególnie dla osób spędzających dużo czasu w konsoli. Narzędzie to nosi prostą nazwę „go-tool” i dostępne jest pod adresem http://code.google.com/p/go-tool/, a jego jedynym zadaniem jest skrócić czas dostępu do najczęściej odwiedzanych katalogów poprzez tworzenie skrótów.

Instalacja narzędzia jest dość prosta – o ile posiadamy zainstalowanego Pythona:
1. Pobranie archiwum.
2. Rozpakowanie.
3. Przejście do rozpakowanego katalogu z poziomu konsoli.
4. Uruchomienie polecenia: python setup.py install.
5. Uruchomienie pliku go.py w nowo utworzonym katalogu: build/lib/go.py.
6. Wybranie lokalizacji umieszczenia pliku go.bat poprzez wybranie z listy ścieżek.
7. Konfiguracja skrótów już w trakcie korzystania z narzędzia.

Instrukcja obsługi dostępna jest po wywołaniu (http://code.google.com/p/go-tool/wiki/GettingStarted):

$ go --help
Quick directory changing.

Usage:
go <shortcut>[/sub/dir/path]    # change directories
# same as "go -c ..."
go -c|-o|-a|-d|-s ...           # cd, open, add, delete, set
go --list [<pattern>]           # list matching shortcuts

Options:
-h, --help                      print this help and exit
-V, --version                   print verion info and exit

-c, --cd <path>                 cd to shortcut path in shell
-s, --set <shortcut> <dir>      set a shortcut to <dir>
-a, --add-current <shortcut>    add shortcut to current directory
-d, --delete <shortcut>         delete the named shortcut
-o, --open <path>               open the given shortcut path in
explorer (Windows only)
-l, --list [<pattern>]          list current shortcuts

Ciekawą opcją – dostępną tylko w Windows – jest przełącznik -o, który w momencie użycia:

go -o <SKRÓT>

powoduje otwarcie okna w Eksplorerze Windows z katalogiem wskazywanym na <SKRÓT>.

Written by filipgorczynski

2013.02.28 at 23:43:11

Napisane w Dobre praktyki, Narzędzia, Python, Rozwiązania

Tagged with , ,

Przenoszenie linii lub zaznaczonego bloku w górę i w dół w Komodo Edit

leave a comment »

Komodo Edit jako jeden z ciekawszych edytorów pozwala pisać własne makra w językach JavaScript i Python. Mimo ogromnej ilości przydatnych funkcji nie posiada wbudowanego przenoszenia bloków oraz zaznaczenia w górę i w dół. Poniżej makra, które dodają takie działanie do Komodo Edit. Aby wszystko działało jak należy w Views | Tabs & Sidebars | Toolbox klikamy prawym przyciskiem myszy i wybieramy Add > New macro. Podajemy opisowe nazwy, np: Move Line or Move Selection Up, Move Line or Move Selection Down, jako język wybieramy JavaScript i w pole tekstowe wprowadzamy poniższe bloki kodu – otrzymujemy 2 makra. Aby korzystanie było wygodne podpinamy w drugiej zakładce (Key Bindings) skróty klawiaturowe, u mnie Ctrl+Shift+Up oraz Ctrl+Shift+Down.

Przenoszenie linii lub zaznaczonego bloku w dół:

komodo.assertMacroVersion(3);
if (komodo.view) { komodo.view.setFocus() };

var ke = komodo.editor;

if( ke.lineFromPosition( ke.currentPos ) == (ke.lineCount - 1) )
     return;

if (ke.selText){

     // Extend selection to beg of line at front and end of line at back
     var selStartLine     = ke.lineFromPosition(ke.selectionStart);
     var selEndLine       = ke.lineFromPosition(ke.selectionEnd);
     var numLinesSelected = selEndLine - selStartLine;

     var selStart = ke.positionFromLine(selStartLine);
     var selEnd   = ke.getLineEndPosition(selEndLine);

     ke.setSel(selStart, selEnd);

     // Copy the selected text and remove it
     var text =  komodo.interpolate('%s');
     komodo.doCommand('cmd_delete'); // This leaves a blank line in place of selection

     // Move our selection to a new place
     // First move our blank line up
     komodo.doCommand('cmd_lineNext')
     ke.lineTranspose();

     // Insert our text
     ke.insertText(ke.currentPos, text);

     // Restore selection
     var newSelStartLine = ke.lineFromPosition( ke.currentPos );
     var newSelEndLine   = newSelStartLine + numLinesSelected;

     var newSelStart = ke.currentPos;
     var newSelEnd   = ke.getLineEndPosition(newSelEndLine);

     ke.setSel(newSelStart, newSelEnd);

} else {

     komodo.doCommand( 'cmd_lineNext' );
     ke.lineTranspose();
}

Przenoszenie linii lub zaznaczonego bloku w górę

komodo.assertMacroVersion(3);
if (komodo.view) { komodo.view.setFocus() };

var ke = komodo.editor;

if( ke.lineFromPosition( ke.currentPos ) == 0 )
     return;

if (ke.selText){

     // Extend selection to beg of line at front and end of line at back
     var selStartLine     = ke.lineFromPosition(ke.selectionStart);
     var selEndLine       = ke.lineFromPosition(ke.selectionEnd);
     var numLinesSelected = selEndLine - selStartLine;

     var selStart = ke.positionFromLine(selStartLine);
     var selEnd   = ke.getLineEndPosition(selEndLine);

     ke.setSel(selStart, selEnd);

     // Copy the selected text and remove it
     var text =  komodo.interpolate('%s');
     komodo.doCommand('cmd_delete'); // This leaves a blank line in place of selection

     // Move our selection to a new place
     // First move our blank line up
     ke.lineTranspose();
     komodo.doCommand('cmd_linePrevious')

     // Insert our text
     ke.insertText(ke.currentPos, text);

     // Restore selection
     var newSelStartLine = ke.lineFromPosition( ke.currentPos );
     var newSelEndLine   = newSelStartLine + numLinesSelected;

     var newSelStart = ke.currentPos;
     var newSelEnd   = ke.getLineEndPosition(newSelEndLine);

     ke.setSel(newSelStart, newSelEnd);

} else {

     ke.lineTranspose();
     komodo.doCommand( 'cmd_linePrevious' );
}

Jeśli dobrze pamiętam to rozwiązanie pochodzi z forum ActiveState dotyczącego Komodo.

Written by filipgorczynski

2012.09.08 at 21:01:22

%d blogerów lubi to: