Для того чтобы установить VNC Server на Ubuntu linux и при этом загружался нормальны рабочий стол, а не чёрно-белая хрень, нужно выполнить следующее:

sudo apt-get install vnc4server

Если Вы используете lxde или у Вас она по крайней мере установлена, то далее нужно отредактировать файл ~/.vnc/xstartup и привести его к такому виду:

 

#!/bin/sh

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresourceslxpanel &

/usr/bin/openbox-session &
/usr/bin/lxsession -s LXDE &

Далее запускаем vncserver, вводим пароль дважды и подключаемся к хосту по адресу x.x.x.x:1, где 1 — это номер виртуального экрана.

Чтобы остановить vncserver необходимо выполнить следующее:

vncserver -kill :1

где :1 — это номер виртуального экрана.

Если нужно запустить vncserver с особым разрешением, для этого запускаем его следующим образом:

vncserver -geometry 800×600

Это всё.

Создаём в корне сайта out.php

В неё внутри PHP-тегов пишем такой код:

    if ((isset($_GET['link'])) AND (preg_match( '/^(http|https)://[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}'.'((:[0-9]{1,5})?/.*)?$/i' ,$_GET['link']))){
        header("Location: ".$_GET['link']."");
    }

После сохранения, заменяем все ссылки на сайте на подобные: /out.php?link-http://itblog.pp.ua. Это позволяет поисковым системам не считать эти ссылки за внешние, тем самым повышает, а точнее не снижает тИЦ и PR сайта.

Чтобы в WordPress скрипте были относительные ссылки, вместо привязанных к одному домену, необходимо в начало файла wp-config.php добавить следующие строки:

define('WP_SITEURL', '/');
define('WP_HOME', '/');

Работа с JTable в Java SE построена на основе паттерна MVC, поэтому работать мы будем с моделью компонента jTable.

package example.Models;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;

public class DbTableModel extends AbstractTableModel {

    private Object[][] content;     //хранит данные
    private String[] columnNames;   //хранит названия заголовков
    private Class[] columnClasses;  //хранит типы полей (столбцов)

    public DbTableModel(Connection con, String query, String tableName) throws SQLException {
        //super();
        getTableContent(con, query, tableName);
    }

    private void getTableContent(Connection conn, String query, String tableName) throws SQLException {
        DatabaseMetaData md = conn.getMetaData();
        ResultSet rs = md.getColumns(null, null, tableName, null);

        ArrayList colNamesList = new ArrayList();
        ArrayList colTypesList = new ArrayList();

        while (rs.next()) {
            colNamesList.add(rs.getString("COLUMN_NAME"));

            int dbType = rs.getInt("DATA_TYPE");
            switch (dbType) {
                case Types.INTEGER:
                    colTypesList.add(Integer.class);
                    break;
                case Types.FLOAT:
                    colTypesList.add(Float.class);
                    break;
                case Types.DOUBLE:
                case Types.REAL:
                    colTypesList.add(Double.class);
                    break;
                case Types.DATE:
                case Types.TIME:
                case Types.TIMESTAMP:
                    colTypesList.add(java.sql.Date.class);
                    break;
                default:
                    colTypesList.add(String.class);
                    break;
            }
        }

        columnNames = new String[colNamesList.size()];
        colNamesList.toArray(columnNames);

        columnClasses = new Class[colTypesList.size()];
        colTypesList.toArray(columnClasses);

        Statement st = conn.createStatement();
        rs = st.executeQuery(query);

        ArrayList rowList = new ArrayList();

        while (rs.next()) {
            ArrayList cellList = new ArrayList();
            for (int i = 0; i < columnClasses.length; i++) {
                Object cellValue = null;
                if (columnClasses[i] == String.class) {
                    cellValue = rs.getString(columnNames[i]);
                }
                else if (columnClasses[i] == Integer.class) {
                    cellValue = new Integer(rs.getInt(columnNames[i]));
                }
                else if (columnClasses[i] == Float.class) {
                    cellValue = new Float(rs.getInt(columnNames[i]));
                }
                else if (columnClasses[i] == Double.class) {
                    cellValue = new Double(rs.getDouble(columnNames[i]));
                }
                else if (columnClasses[i] == java.sql.Date.class) {
                    cellValue = rs.getDate(columnNames[i]);
                }
                else {
                    System.out.println("Can't define column type " + columnNames[i]);
                }
                cellList.add(cellValue);

            }// for
            Object[] cells = cellList.toArray();
            rowList.add(cells);
        }// while
        content = new Object[rowList.size()][];
        for (int i = 0; i < content.length; i++) {
            content[i] = (Object[]) rowList.get(i);
        }
        rs.close();
        st.close();
    }

    @Override
    public int getRowCount() {
        return content.length;
    }

    @Override
    public int getColumnCount() {
        if (content.length == 0) {
            return 0;
        } else {
            return content[0].length;
        }
    }

    @Override
    public Object getValueAt(int row, int col) {
        return content[row][col];
    }

    @Override
    public Class getColumnClass(int col) {
        return columnClasses[col];
    }

    @Override
    public String getColumnName(int col) {
        return columnNames[col];
    }

    @Override
    public boolean isCellEditable(int rowIndex, int colIndex) {
        if (colIndex == 1) {
            return false;
        } else {
            return true;
        }
    }
}

В конструкторе класса, или методе getTableContent() есть 3 параметра:
con типа Connection, строковый query и строковый tableName.

В предыдущем посте мы использовали свой класс для работы с базой данных, у нас там есть метод getConnection(), который возвращает ссылку на используемый нами Connection, его и нужно передать в конструктор или метод.

В параметр query мы передаём SQL запрос, в ответ на который хотим получить необходимые данные (напоминаю, здесь поля можно представлять используя AS, чтобы заголовки можно было сделать и на русском языке, понятными пользователю Вашей программы, либо использовать представления — VIEW). Если необходимо выбрать все поля, то можно воспользоваться запросом, «SELECT * FROM tableName«, при этом третий параметр конструктора/метода tableName также обязательно необходимо заполнять именем таблицы.

В программе мы делаем следующее:

MySQLConnect myConnect = new MySQLConnect(Host, dbName, login, pass);

DbTableModel myTableModel = new DbTableModel(myCon.getConnection(), «SELECT * FROM tableName», «tableName»);

jTable1.setModel(myTableModel);

Пришлось мне как-то разрабатывать на Java проект, который был завязан на работе с базой данных MySQL. Я нашёл в Сети класс, который удобно работает с SQLite, и переделал его для работы с MySQL, собственно сделать это было нетрудно, дополнительно в этот класс можно добавить несколько методов для удобной работы, но это уже на Ваше пожелание. Собственно, для своих задач эти методы я создавал, а Вам они будут скорее всего не пригодятся, оставлю самые общие лишь.

Добавлены некоторые методы, возвращающие массив объектов из базы данных, переделать можно по своему усмотрению.

Уточняю, этот класс работает с базой данных минуя ORM, т.е. не использует ORM.

package example.Database;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class MySQLConnect {

    private Connection con = null;

    public MySQLConnect() {
        //для того, чтобы подключение можно было сделать позже
    }

    public MySQLConnect(String url, String port, String dbName, String login, String pass) {
        setConnection(url, port, dbName, login, pass);
    }

    public MySQLConnect(String url, String dbName, String login, String pass) {
        setConnection(url, "3306", dbName, login, pass);
    }

    public void setConnection(String url, String port, String dbName, String login, String pass) {
        try {
            if (port == null) {
                port = "3306"; // если порт не указан, то порт по умолчанию
            }
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://" + url + ":" + port + "/" + dbName, login, pass);
        } catch (ClassNotFoundException ex) {
            System.err.println("MySQLdb: Cannot find this db driver classes. Install com.mysql.jdbc driver!");
        } catch (SQLException e) {
            System.err.println("MySQLdb: Cannot connect to " + dbName);
        }
        if (con != null) {
            System.out.println("Connection to DB established successfully.");
        }
    }

    public Connection getConnection() {
        return con;
    }

/*	метод, выполняющий просмотр базы данных, по сути не нужный,
*	т.к возвращает лишь успешно ли выполнена операция, но для
*	примера выполнения запроса, оставлю 
*/
    public boolean executeQuery(String query) {
        try {
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery(query);
            rs.close();
            st.close();
            return true;
        } catch (SQLException e) {
            System.err.println("There are problems with the query " + query + " in method "executeQuery"");
            e.printStackTrace();
            return false;
        }
    }

    public void executeUpdate(String query) { //метод, выполняющий изменения в БД
        try {
            PreparedStatement statement = con.prepareStatement(query);
            statement.executeUpdate();
        } catch (SQLException e) {
            System.err.println("There are problems with the query " + query + " in method "executeUpdate"");
            e.printStackTrace();
        }
    }

    public Object[][] getQueryResultByParam(String query, String idColumnName, String param) {
        try {
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery(query);

            ArrayList idArrayList = new ArrayList();
            ArrayList dataArrayList = new ArrayList();

            while (rs.next()) {
                idArrayList.add(rs.getString(idColumnName));
                dataArrayList.add(rs.getString(param));
            }

            Object[][] result = new Object[2][];

            result[0] = idArrayList.toArray();
            result[1] = dataArrayList.toArray();

            rs.close();
            st.close();
            return result;
        } catch (SQLException e) {
            System.err.println("There are problems with the query " + query + " in method "getQueryResultByParam"");
            e.printStackTrace();
            return null;
        }
    }

    public Object[][] getQueryResultByParam(String query, String param) {
        return this.getQueryResultByParam(query, "id", param);
    }

    public Object[][] getParam(String tableName, String param) {
        return this.getQueryResultByParam("SELECT id, " + param + " FROM " + tableName + " WHERE deleted = '0' ORDER BY id", "id", param);
    }
}

Часто на сайтах, которые используют баннеры, можно видеть как при прокрутке страницы, где содержимое боковых панелей уже закончилось, а центральная панель ещё продолжается, реклама остаётся вверху, и никто по ней не переходит.

Ситуацию с этим поможет решить зафиксированный блок.

 

<div id=»myAd» style=»position: fixed; top: 10px; right: 2.78%; width: 170px; background: #ffffff; z-index: 1; visibility: hidden;»> 

Здесь код баннера

</div>

в стилях для этого необходимо кроме прочих настроек отображения (здесь рассматривается общий случай, поэтому нет смысла описывать весь стиль этого элемента, т.к. у Вас всё равно будет частный случай):

position: fixed;

как видите из кода DIV’а, этот элемент изначально скрыт. Для того чтобы при прокрутке он отобразился, необходимо добавить JavaScript:

window.onscroll = function() {

	var scrolled = window.pageYOffset || document.documentElement.scrollTop;

	if (scrolled>2850){
		document.getElementById('myAd').style.visibility = 'visible';
	}
	else{
		document.getElementById('myAd').style.visibility = 'hidden';
	}
}

В html коде страницы создаём в любом месте в пределах тега body (лишь бы не внутри любого другого контейнера),

<div id="scrollBack" onClick="scrollBack()"></div>

в пределах тегов <head></head> пишем следующий код:
var oldPos;
window.onscroll = function() {

	var scrolled = window.pageYOffset || document.documentElement.scrollTop;

	if (scrolled>0){
		document.getElementById('scrollBack').style.visibility = 'visible';
		document.getElementById('scrollBack').innerHTML = 'Up'; //здесь можно подставить например картинку со стрелкой вверх
	}
	else
	{
		document.getElementById('scrollBack').innerHTML = 'Down';// а здесь можно подставить например картинку со стрелкой ввниз
	}
}

function scrollBack(){

	if (window.pageYOffset || document.documentElement.scrollTop > 0){
		oldPos = window.pageYOffset || document.documentElement.scrollTop;
		window.scrollTo(0,0);
	}
	else{
		window.scrollTo(0,oldPos);
	}
}

а в стилях настраиваем нашу панельку с id scrollBack таким образом, чтобы она была слева, зафиксированна, и необходимой длины (я для примера использовал 100%ную высоту)

вот содержимое моего css:

#scrollBack {
			position: fixed;
			left: 1px;
			top: 0px;
			width: 80px;
			height: 100%;
			opacity: 0;
			font-family: sans-serif;
			font-weight: bold;
			font-size: 0.5em;
			color: #000088;
			background: #e0e0ff;
			border: 1px solid #fff;
			padding: 2px;}
#scrollBack:hover {opacity: 0.8;}

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

Для начала идём на сайт http://dev.mysql.com/downloads/connector/j/ и скачиваем архив с библиотекой.

Распаковываем архив, берём оттуда только файл mysql-connector-java-x.x.xx-bin.jar (где x.x.xx — версия библиотеки).

После чего есть 2 способа подключения библиотеки к проекту:

1-й способ: Заходим в свойства проекта, ищем раздел «библиотеки» — в разных средах разработки по разному, но принцип тот же, и нажимаем «добавить jar файл», где указываем путь к файлу.

2-й способ: Копируем данный .jar файл в директорию, где у Вас установлена Java/jre7/lib/ext и также через свойства проекта в разделе «библиотеки», нажимаем «добавить библиотеку», где выбираем MySQLConnector.

Thats all folks.

Если у вас наблюдается явление, когда один и тот же пост с дублируется на всех страницах вашего WordPress блога, то попробуйте удалить (можно из директории /wp-content/plugins через FTP) плагин advanced-xcluder. Почему-то такой глюк стал наблюдаться после переноса одного сайта с хостинга на хостинг.