środa, 13 czerwca 2012

Instalacja javy 7 pod ubuntu 10.04 i nowszych

mozna znalesc wszystko co trzeba tutaj:
http://www.ubuntu-pomoc.org/instalacja-oracle-java-jdk-7/

na wypadek wszelki, gdyby z tamta strona mialo cos sie stac:

  1. Dodaj repozytorium:
    sudo add-apt-repository ppa:webupd8team/java
  2. Zaktualizuj listę pakietów:
    sudo apt-get update
  3. Zainstaluj pakiet oracle-jdk7-installer:
    sudo apt-get install oracle-jdk7-installer

Usuwanie

sudo apt-get remove oracle-jdk7-installer

środa, 6 czerwca 2012

Linux, Unix, Copy, SCP

generalnie to nie rozpisujac sie...
zrodlo: http://vikashazrati.wordpress.com/2008/02/03/quicktip-transferring-files-between-two-ubuntu-systems/

kopiowanie folderow:
scp -r directoryname userid@hostname:directoryname2
czyli aby skopiowac katalog XXX z aktualnie uzywanego komputera, na komputer o adresie CCC i uzytkownika VVV nalezy wpisac:
scp -r XXX VVV@CCC:XXX
i to wszystko ;]

edit: jest jeszcze pscp, którego używa się dokładnie tak samo, lecz ma kilka dodatkowych opcji, m.in:
-pw do ustawienia hasła - można wtedy wklepać plain tekstem hasło sobie do skryptu, jeśli nie jest to specjalnie istotna sprawa. jeśli chce się zachować bezpieczeństwo i jednocześnie używać scp w skryptach - należy używać RSA.

poradnikow do tego jest wiele, jak choćby te tutaj:
http://linuxproblem.org/art_9.html
https://help.ubuntu.com/community/SSH/OpenSSH/Keys

środa, 18 kwietnia 2012

Wypisanie Environment Variables Java, JAVA_HOME

Poniżej krótki programik w javie, który wypisuje JAVA_HOME.
Printer.java
package java_home;

import java.util.Enumeration;
import java.util.Properties;

public class Printer {

 /**
  * @param args
  */
 public static void main(String[] args) {
  Properties p = System.getProperties();
  Enumeration<Object> keys = p.keys();
  while (keys.hasMoreElements()) {
    String key = (String)keys.nextElement();
    String value = (String)p.get(key);
    if(key.contains("java.home"))
     System.out.println(key   ": "   value);
  }

 }

}


Aby wypisać wszystkie variable wystarczy wykomentować linijkę
if(key.contains("java.home"))

i po wszystkim!
 można toto wysłać komuś, żeby to odpalił i odesłał wyniki - jeśli jest mało kumaty i sam nie umie sprawdzić.... a takim też czasem trzeba pomóc;]

Java FileWriter RandomAccessFile Update

Tytuł jest taki a nie inny, żeby się ładnie w wyszukiwarce znajdowało ;]
generalnie chodzi o to, ze java ma wiele metod dodawania czegos na koniec pliku,
natomiast nie jest już tak różowo, jak trzeba coś zmienić w środku...
Poniżej przykład loga, w którym zmieniać się będzie 1 int, aczkolwiek ta konstrukcja pozwala już na zbudowanie dokładnie wszystkiego.

edit: tak swoja droga, to do zabaw z plikami o wiele lepszy jest linux'owy SED czy AWK, no ale cóż. Może innym razem będzie mi się chciało jakiś fajny skrypt zamieścić. Zresztą czasem trzeba to zrobić w javie, bo tak ci na gorze każą ;]

tak, żeby być fajnym, to wrzuciłem jeszcze enuma ze sztryngami
StringEnum.java
package stringi;

public enum StringEnum {
  HEADER     ("General Log HEADER"), 
  ROW_1     ("jakis tekst, row1:"), 
  ROW_2     ("siakis int:");
  
  private String description;
  
  private StringEnum(String s) {
   description = s;
  }
  
  public String getDescription() {
    return description;
  }
}

a teraz, po tym przydługim wstępie - rozwiązanie problemu - RandomAccessFile.
Klasa ta pozwala ustawić "kursor" (metoda seek) w dowolnym miejscu dokumentu i potem wpisać żądaną treść (ja akurat używam writeBytes, ale jest tez wiele innych "write'ów")
uwaga: write nie dopisuje treści w danym miejscu przesuwając resztę dalej (jak w wordzie ;]). nie ma tak dobrze. write nadpisuje kolejne bajty do znaku końca linii (tak to z doświadczenia u mnie wyszło)
najłatwiej jest oczywiście nadpisać cały plik od początku, szczególnie, że wtedy odpada problem z ustawianiem długości pliku[setLength()] (tak, żeby ko na końcu nie obcięło, jeśli dodamy coś w środku)

NewTestRandomAccessFile.java
package stringi;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;

public class NewTestRandomAccessFile {
    private File file = null;
 private RandomAccessFile generalFileWriter = null;
 private Integer siakisInt = 0;
 
 public NewTestRandomAccessFile(String fileName) {
  try {
   initGeneralLog(fileName);
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
    
 private void initGeneralLog(String fileName) throws IOException{
  file = new File(fileName);
  if(file.exists()){
   file.delete();
   file.createNewFile();
  }
  generalFileWriter = new RandomAccessFile(file, "rw");
  generalFileWriter.writeBytes(buildGeneralLog());
 }

 private String buildGeneralLog(){
  StringBuilder sb = new StringBuilder();
  sb.append(StringEnum.HEADER.getDescription())           .append("\n");
  sb.append(StringEnum.ROW_1.getDescription())  .append("some static data bla bla") .append("\n");
  sb.append(StringEnum.ROW_2.getDescription())  .append(siakisInt +=150)    .append("\n");
  return sb.toString();
 }
 
 
 private void writeDataToGeneralLog(String output) throws IOException {
  generalFileWriter.setLength(output.getBytes().length);
  generalFileWriter.seek(0);
  generalFileWriter.writeBytes(output);
 }
 
 private void closeLog() throws IOException{
  if(generalFileWriter != null){
   writeDataToGeneralLog(buildGeneralLog());
   generalFileWriter.close();
  }
 }
 
 public static void main(String[] args) throws IOException {
  NewTestRandomAccessFile test = new NewTestRandomAccessFile("WrRaThY.txt");
  for(int i = 0; i<10;  i){
   test.writeDataToGeneralLog(test.buildGeneralLog());
  }
  test.closeLog();
  
 }
}

edit:  jest niby jeszcze jeden sposób, żeby updatować plik, ale nie wydaje mi się ani ładny, ani stabilny.
przy dużej ilości zapisów do pliku pewnie się wysypie... ale niech będzie, wrzucę go.

package stringi;

import java.io.FileWriter;
import java.io.IOException;

public class Filewriter {

 /**
  * @param args
  */
 private static FileWriter fw = null;
 private static int samplersProcessedCounter = 0;
 
 public static void main(String[] args) throws IOException, InterruptedException {
     int count = 10;
     Filewriter my = new Filewriter();
     for(int i = 0; i<count;  i){
      my.funkcja();
     }
 }
 
 public void funkcja(){
  try {
   String line = "";

   if (fw == null) {// initiate file writer
    fw = new FileWriter("test.csv");
    line = "col1, col2, col3\n";
    fw.append(line);

   }

   line = "col1row" samplersProcessedCounter ", col2row" samplersProcessedCounter ", col3row" samplersProcessedCounter "\n";
   fw.append(line);
   samplersProcessedCounter  ;
   //WARNING! this is strange, probably will be unstable
   fw.flush();
   fw.close();
   fw=null;
   
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

}

od zwykłego file writera rozni sie tylko miejscem zamykania (stad moje obawy o stabilność, po każdym wierszu trzeba zamknąć plik, znullować referencję i otworzyć plik od nowa...
package stringi;

import java.io.FileWriter;
import java.io.IOException;

public class Filewriter {

 /**
  * @param args
  */
 private static FileWriter fw = null;
 private static int samplersProcessedCounter = 0;
 
 public static void main(String[] args) throws IOException, InterruptedException {
     int count = 10;
     Filewriter my = new Filewriter();
     for(int i = 0; i<count;  i){
      my.funkcja();
     }
     //NORMAL FLUSH AND CLOSE, AFTER EVERYTHING IS DONE
     fw.flush();
     fw.close();
 }
 
 public void funkcja(){
  try {
   String line = "";

   if (fw == null) {// initiate file writer
    fw = new FileWriter("test.csv");
    line = "col1, col2, col3\n";
    fw.append(line);

   }

   line = "col1row" samplersProcessedCounter ", col2row" samplersProcessedCounter ", col3row" samplersProcessedCounter "\n";
   fw.append(line);
   samplersProcessedCounter  ;
   /*WARNING! COMMENT!
   fw.flush();
   fw.close();
   fw=null;*/
   
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

}


piątek, 13 kwietnia 2012

StringToHex, HexToString

czesto sie tego szuka, szybko sie znajduje... ale zawsze mozna szybciej ;]


 public synchronized static String convertStringToHex(String str) {

  char[] chars = str.toCharArray();

  StringBuffer hex = new StringBuffer();
  for (int i = 0; i < chars.length; i  ) {
   hex.append(Integer.toHexString((int) chars[i]));
  }

  return hex.toString();
 }


 public synchronized static String convertHexToString(String hex) {

  StringBuilder sb = new StringBuilder();

  for (int i = 0; i < hex.length() - 1; i  = 2) {

   // grab the hex in pairs
   String output = hex.substring(i, (i   2));
   // convert hex to decimal
   int decimal = Integer.parseInt(output, 16);
   // convert the decimal to character
   sb.append((char) decimal);

  }

  return sb.toString();
 }

Kod jest skopiowany z czyjegos bloga, dobre pare miechow temu, wiec niestety odnosnika nie bedzie

czwartek, 12 kwietnia 2012

Syntax highlight na bloggerze

Skoro juz wszystko dziala jak nalezy - opisze po krotce co, jak, skad i po co.
krok 1.
ustawienia bloga --> szablon --> edytuj kod HTML poszukaj tagu <head> i zamiast niego wklej to:

<link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeEclipse.css' rel='stylesheet' type='text/css'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushBash.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js' type='text/javascript'/>
<script language='javascript' type='text/javascript'>
 SyntaxHighlighter.config.bloggerMode = true;
 SyntaxHighlighter.all();
</script>

<head>
to sa akurat jezyki, ktora moga mi sie przydac. pelna lista dostępnych jest TU
wystarczy dodac linka z kolejnym brushem, by go używać

krok 2.
 kolejna przydatna rzecz, to tool zamieniajacy specjalne znaki htmla, na ich tekstowe odpowiedniki. http://www.elliotswan.com/postable/

krok 3.
teraz... jedyne co teraz trzeba zrobic, to uzyc naszego narzedzia.
ogolna zasada na przykladzie htmla:

<pre class = 'brush:html;'>
   jakis html...
</pre>

ten 'jakis html' to wersja po uzyciu postable, czyli z roznymi dziwnymi znaczkami zastepnujacymi znaki specjalne HTMLa.

EDIT: BARDZO wazne jest, by kod oraz pre i /pre wstawiac nie w graficznej edycji tekstu, a pod  edycja kodu HTML. inaczej calosc w ogole nie zadziala.

porownanie czystego tekstu z postable, z tym co widzimy na blogu:

POSTABLE:

&lt;pre class = &#39;brush:html;&#39;&gt;
   &lt;head&gt;
      jakis html...
   &lt;/head&gt;
&lt;/pre&gt;


BLOG:
<pre class = 'brush:html;'>
   <head>
      jakis html...
   </head>
</pre>

trzeba pamietac o tej konwersji, gdyz zamiast powyzszego, moze nam wyjsc to:
   
      jakis html...
   
przyklady.... 
JAVA:
 public synchronized static String convertStringToHex(String str) {

  char[] chars = str.toCharArray();

  StringBuffer hex = new StringBuffer();
  for (int i = 0; i < chars.length; i++) {
   hex.append(Integer.toHexString((int) chars[i]));
  }

  return hex.toString();
 }
JAVASCRIPT:
    <script type="text/javascript">
    var d = new Date();
    var time = d.getHours();

    if (time < 10) {
    document.write("<b>Good morning</b>");
    } else {
    document.write("<b>Good day</b>");
    }
    </script>

środa, 11 kwietnia 2012

Instalacja Windows 7 bez użycia DVD

do rzeczy:
ściągnąć programik stąd: Windows 7 USB/DVD Download Tool
jest to przestraszliwie prosty tool, więc nie ma co go opisywać. link jest ważny.

kroki, które należy podjąć:
  1. ściągnąć obraz windowsa (najlepiej oczywiście z MSDN AA, jak autor ;] )
  2. 4 gb to rozsądne minimum na zabawę z win7 (samo iso to ok 3.5. szczerze mówiąc to już mego pena wyczyściłem, więc nie sprawdziłem ile toto realnie zajmowało. szczęście, że akurat 16 gb był pod ręką)
  3. pena dobrze jest przed zabawą z nim przeformatować
  4. odpalić programik z ww linka, w 4 prostych krokach doprowadzi nas do finału - czyli kopiowania
  5. tak przygotowanego pena podpiąć do maszyny bez napędu, włączyć ją, po czym szaleńczo klikać w F11 i/lub F12 i/lub F2 i/lub DELETE. ew sprawdzić w manualu, co powinno poskutkować.
  6. jak już się dostaniemy do ustawień bootowania - przeklikać się do USB, zapisać i zresetować kompa. (jakby ktoś chciał sobie pozamieniać kroki - możliwe jest, że nie da się akurat w Twoim Biosie/EFI/UEFI/cokolwiek ustawić bootowania z USB, póki będzie ono niezamieszkane, więc lepiej to robić w tej kolejności)
  7. TADAAAAM, wyświetlić się powinno okienko instalatora

ps. windows 7 instalowany z USB na dysk SSD zainstalował się w przerażającym czasie... 1 wyjścia na jedynkę do łazienki. powaga. chyba z półtorej minuty to trwało. system (bez wgranych sterowników płyty głównej [może coś to przyspieszy, może nie]) startuje w 21 s [od kliknięcia przycisku power, do załadowania wszystkiego]. jak dla mnie całkiem w pytkę :D

pps. jak dobrze pójdzie, to kiedyś własnej głowy zapomnę, więc link do MSDN AA nie zaszkodzi tu umieścić:
MSDN AA PW EITI

Początek...

GENEZA:
mhm...
jest to mój pierwszy blog w życiu.

piszę go z grubsza dla siebie.
nie będzie tu raczej zbyt wielu "fajnych" newsów.
będzie trochę kodu.
kod będzie, gdyż część rozwiązań, które udaje mi się zaimplementować, wyszperać, albo co jeszcze po prostu... umyka z pamięci. a dzięki temu blogowi mam nadzieję uda mi się je utrzymać w jednym miejscu.
będą też triki ogólne (np teraz biedze się z instalowaniem windowsa 7 na komputerze bez dvd. zaraz prawdopodobnie powstanie post z linkiem czy dwoma do programu(ów?) którego(ych?) użyłem... i tyle. może krótki opis co jest co i gdzie co trzeba kliknąć. o.


widziałem, że wielu ludzi dodaje też sekcję...

O MNIE
,więc będzie sekcja "o mnie...".
nie ma co się rozpisywać. student, początkujący programista. leń. starczy.

PRZYSZŁOŚĆ
mam szczerą nadzieję, że nie przestane tego bloga updatować (w końcu zawsze znajdzie się coś nowego do zrobienia/nauczenia/godnego zapamiętania), aczkolwiek lenistwo może wygrać.
mam też nadzieję, że kiedyś ktoś tu może nawet trafi i znajdzie coś przydatnego dla siebie.

no... i to tyle. pierwszy wpis poszedł.
Adios!

edit: a czemu po polsku? bo:
  1. mało jest materiałów w naszym ojczystym języku.
  2. może wreszcie nauczę się pisać z polskimi znakami
  3. może wreszcie nauczę pisać się pełnymi, wielokrotnie złożonymi zdaniami
  4. bo jestem leniwy i nie chce mi się silić na angielski