понедельник, 25 ноября 2013 г.

Using Grep command for search in project sources

Problem: fast search some code blocks in big projects with lots of nested directories using command-line tools.

Solving: you need grep command. Its really great tool for search text in files with regular expressions, coming from Unix OS and now available on Windows, *nix and Mac OS. All you need is:

grep -rin --include="*.php" "function Action(" /path/to/directory/

So, let's consider parameters passed to grep command:

  • -r — the search will be recursive, that is in all subdirectories in our main directory
  • -i — the search will be case insensitive
  • -n — output will contain line numbers
  • --include="*.php" — search will be only in files that has php extension. Of course, available all regular expressions for describing needed file names
  • "function Action(" — needed text
  • /path/to/directory — directory for search accordingly

If you need just filenames without in-line matches, you can use parameter -l:

grep -rinl --include="*.php" "function Action(" /path/to/directory/

That's all - good luck in your search:)

среда, 20 ноября 2013 г.

Git и Bitbucket за 20 минут


Git - распределенная система контроля версий файлов, созданная под руководством Линуса Торвальдса. Системы контроля версий позволяют хранить несколько версий одних и тех же файлов с возможностью возврата к старому варианту, просмотра изменений, их авторов и т.д.

Распределенная система контроля версий не нуждается в центральном сервере, хранящем версии, вся история хранится на каждом локальном компьютере и при необходимости синхронизируется с аналогичным хранилищем другого компьютера. В этом отличие Git от, например, SVN - можно установить Git только на локальный компьютер и хранить все версии у себя, не дублируя на сервер. Однако в случае командной работы все же удобно иметь сервер, хранящий версии. Такой сервер также можно воспринимать как бэкап всех актуальных файлов и их версий, доступный из любой точки мира.

Про Git есть отличная бесплатная книга с соответствующим названием Pro Git, также спасибо соотечественникам за бескорыстный перевод - рекомендую.

Здесь я приведу краткие данные, позволяющие быстро начать работу с Git и Bitbucket. Bitbucket - это сервис, централизованно хранящий репозитории Git, бесплатный для 5 пользователей и платный для больших команд. Преимущество Bitbucket перед аналогичным сервисом GitHub - возможность создания закрытых репозиториев (не open source).

воскресенье, 10 марта 2013 г.

Hack admin password for D-Link DIR-300 Wi-Fi router


I recently had a problem with Wi-Fi router Dlink DIR-300. I didn't know admin password for router administration interface (I even didn't know who was its administrator, yeah:)), but there was necessary to change some router settings. Of course, it was possible to reset all router configurations by hardware reset, but I didn't want to set up all from scratch.

So, I started looking for a hacker way:) The way was found quickly. All what we need is to send just one HTTP request to one of the router PHP scripts. Ta-dam!

Open your favourite browser and go to this address:

http://router_ip/tools_admin.php?ACTION_POST=LOGIN&LOGIN_USER=a&LOGIN_PASSWD=b&login=+Log+In+&NO_NEED_AUTH=1&AUTH_GROUP=0&admin_name=admin&admin_password1=pass

Router_ip is IP address of your router (in my case it is 192.168.0.1), and pass is the new password for admin user. That's all! Now you can login in router administration interface using username admin and password pass.

Have a nice day and secure systems:)

среда, 28 марта 2012 г.

Search & delete thumbs.db commands for Windows

Search all hidden Thumbs.db in current folder and its subfolders:
dir Thumbs.db /s /ah
Recursively delete all Thumbs.db in current folder:
del / S / AR / AS / AA / AA Thumbs.db

вторник, 10 января 2012 г.

JDBC > ResultSet > getDate - форматирование даты в Java

Задача: используя чистый JDBC, выбрать из базы данных поле с типом DATE и форматировать дату к нужному формату.

Решение: для получения даты из набора данных ResultSet необходимо воспользоваться методом getDate(), результат работы которого отформатировать при помощи родного java класса java.text.SimpleDateFormat. Как это всё выглядит в сборке показано ниже - код отлично документирован.

import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;

public class getDateFormat {
  public static void main(String[] args){
    // создаем подключение, в данном примере к Oracle
    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    Connection conn = DriverManager
             .getConnection("jdbc:oracle:thin:@192.168.0.1:1521:db11g",
                            "user_name", "user_pass"
                      );
    // выполняем запрос, возвращающий в составе полей
    // d_point типа DATE
    ResultSet rs = conn.createStatement()
           .executeQuery("select id, action, d_point from users_log");
    // перебираем результаты в цикле
    while (rs.next()){
      // выводим id записи и текстовое поле action
      System.out.println("Id: ".concat( rs.getInt("id").toString() )
                         .concat("\n")
                         .concat("Action: ").concat(
                           rs.getString("action")
                         )
      );
      // получаем поле с датой
      Date d_point = rs.getDate("d_point");
      // форматируем дату и выводим
      String dateFormatted = new SimpleDateFormat("dd.MM.yyyy")
                                      .format( d_point ).toString();
      System.out.println("Date: ".concat(dateFormatted));
    }
  }
}

Параметры форматирования для SimpleDateFormat приведены в официальной документации.

вторник, 8 ноября 2011 г.

Массивы в PL/SQL

PL/SQL, являясь процедурным расширением языка структурированных запросов SQL, имеет все необходимые составляющие для полнофункционального программирования логики. Ветвления, циклы, массивы и т.д. - все как у людей:) Работа с массивами в PL/SQL, однако, отличается от стандартного для многих распространенных языков программирования подхода.

С массивами, как известно, можно делать три вещи: объявлять массив, добавлять/изменять/читать данные по индексу и обходить массив в цикле. Эти действия мы и рассмотрим.

среда, 14 сентября 2011 г.

Использование Ext JS 4 виджетов в рамках Ext JS 3 интерфейса

Ext JS 4 представляет разработчикам много новых возможностей, в числе которых, например, большое количество новых графиков и диаграмм. Сравните - для четвертой версии приведено 22 примера использования элементов Chart против всего четырех примеров для третьей версии. Внушающе, не правда ли?

Однако что, если в наличии есть большое приложение, реализованное на третьей версии Ext JS и возникает необходимость использования некоторых виджетов четвертой версии? Например, типична ситуация, когда в приложение нужно добавить новые диаграммы, но переписывать всё на "четверку" нецелесообразно.