Tuesday, November 30, 2010
MySQL Basics
Source (excerpts)
- If you're upgrading and followed our instructions at the top of this tutorial, now it's time to import your old data. These steps assume upgrading from 4.1 to 5.0.
- C:\Program Files\mysql50\bin> mysql -u root < C:\secure\myolddata.sql
- C:\Program Files\mysql50\bin> mysql -u root -f mysql < ..\share\mysql_fix_privilege_tables.sql This SQL file was in the scripts directory prior to version 5.0.38.
You can ignore all of the query error messages (for example Unknown column, Duplicate column name, etc).
- Log into the server using the permissions from your old MySQL installation:
C:\Program Files\mysql50\bin> mysql -u root -p mysql - The upgrade script gives some privilges that you probably don't want most users having. Let's change them back (adjusting the "otherimportantusers..." below as needed for your system):
mysql 5.0.51b-community-nt> UPDATE user SET Create_tmp_table_priv='N' WHERE user NOT IN ('root', 'otherimportantusers...'); - Exit the client and restart the server:
mysql 5.0.51b-community-nt> exit
C:\Program Files\mysql50\bin> net stop mysql50
C:\Program Files\mysql50\bin> net start mysql50 - If you've never done this tutorial's "Tighten MySQL's Security" steps, below, check them out now. If you've already done them, you can jump down to the Start the Client section.
- Tighten MySQL's Security MySQL has good security controls, but the default installation is wide open. So, if you're doing a new installation, let's close things up before we go any further.
In the following commands, don't forget that if you changed the ports in the my.cnf file, you'll have to adjust the port numbers here.
- MySQL 5.0.x: Activate the "MySQL 50 Shortcut" we created earlier then type in:
mysql -u root mysql
- MySQL 4.1.x: Activate the "MySQL 41 Shortcut" we created earlier then type in:
mysql -u root -P 3341 mysql
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
That means the servers didn't stay started. The most likely reason is the my.cnf file has errors in it. Go back to the Start the services step and carefully read the section about checking the Event Viewer logs.)
Once you are logged in, copy the following queries to Notepad and change NewPw to something unique. Now copy that and paste it into the command prompt window(s) you just opened.
delete from user where Host <> 'localhost' and User <> 'root'; delete from db; update user set Password=password('NewPw') where User='root'; flush privileges; exit
- MySQL 5.0.x: Activate the "MySQL 50 Shortcut" we created earlier then type in:
- Tada!
We'll be using MySQL 5.0.x here. Adjust the shortcut and port as necessary.
Activate the "MySQL 50 Shortcut" we created earlier and type in
mysql -u root -p
then enter your password when prompted. You will then see the following output:
mysql -u root -p
then enter your password when prompted. You will then see the following output:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 5.0.51b Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
If your root account doesn't have a password on it, the above command won't work for you. You really need to get on top of security. Log in without the password:
mysql -u root mysqlThen set a password (changing "NewPw", of course):
update user set Password=password('NewPw') where User='root'; flush privileges;
If you get an error saying Client does not support authentication protocol requested by server; consider upgrading SQL client when trying to connect, that means your client is from before version 4.1 while the server you are connecting to is using version 4.1 or later. The best solution is to install a current version of the MySQL client.
Creating a Simple Database and Displaying its Structure
Instruct MySQL to setup a new database
mysql 5.0.51b> create database database01;
Database "database01" created.
All that really does is create a new subdirectory in your M:\mysql50\data directory.
Open the database
mysql 5.0.51b> use database01
Database changed
Create a table
mysql 5.0.51b> create table table01 (field01 integer, field02 char(10));
Query OK, 0 rows affected (0.00 sec)
Enclose entire list of field names between one pair of parentheses.
Commas are used between each field.
A space may be used after the comma between fields.
A comma is not used after last field.
This, and all SQL statements, are concluded by a semicolon ";".
Commas are used between each field.
A space may be used after the comma between fields.
A comma is not used after last field.
This, and all SQL statements, are concluded by a semicolon ";".
List the tables
mysql 5.0.51b> show tables;
+----------------------+ | Tables in database01 | +----------------------+ | table01 | | table02 | +----------------------+
List the fields in a table
mysql 5.0.51b> show columns from table01;
+---------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+----------+------+-----+---------+-------+ | field01 | int(11) | YES | | | | | field02 | char(10) | YES | | | | +---------+----------+------+-----+---------+-------+
Congratulations! Pretty straightforward, eh?
Putting Data into a Table
Insert a record
mysql 5.0.51b> insert into table01 (field01, field02) values (1, 'first');
Query OK, 1 row affected (0.00 sec)
Enclose entire list of field names between one pair of parentheses.
Enclose the values to be inserted between another pair of parentheses.
Commas are used between each field and between each value.
A space may be used after the comma between fields.
Enclose the values to be inserted between another pair of parentheses.
Commas are used between each field and between each value.
A space may be used after the comma between fields.
List all the records in a table
mysql 5.0.51b> select * from table01;
+---------+---------+ | field01 | field02 | +---------+---------+ | 1 | first | +---------+---------+
Excellent!
Adding Fields
...one field at a time
mysql 5.0.51b> alter table table01 add column field03 char(20);
Query OK, 1 row affected (0.04 sec) Records: 1 Duplicates: 0 Warnings: 0
...more than one at a time
mysql 5.0.51b> alter table table01 add column field04 date, add column field05 time;
Query OK, 1 row affected (0.04 sec) Records: 1 Duplicates: 0 Warnings: 0
The "add column" must be restated for each column.
Commas are used between each add column statement.
A space may be used after these commas.
Commas are used between each add column statement.
A space may be used after these commas.
The MySQL Manual fully explains each possible column data type.
Did it work?
mysql 5.0.51b> select * from table01;
+---------+---------+---------+---------+---------+ | field01 | field02 | field03 | field04 | field05 | +---------+---------+---------+---------+---------+ | 1 | first | NULL | NULL | NULL | +---------+---------+---------+---------+---------+Now we're getting somewhere!
Multi-line Command Entry
The MySQL command line interface allows you to put a statement on one line or spread it across multiple lines. There's no difference in syntax between the two. Using multiple lines allows you to break down the SQL statement into steps you may more easily comprehend.
In multiple line mode, the interpreter appends each line to the prior lines. This continues until you enter a semicolon ";" to close out the SQL statement. Once the semicolon is typed in and you hit enter, the statement is executed.
Here's an example of the same exact SQL statement entered both ways:
Single Line Entry mysql 5.0.51b> create table table33 (field01 integer,field02 char(30)); |
Multiple Line Entry mysql 5.0.51b> create table table33 -> (field01 -> integer, -> field02 -> char(30)); |
Don't break up words:
Valid | Invalid |
---|---|
mysql 5.0.51b> create table table33 -> (field01 -> integer, -> field02 -> char(30)); | mysql 5.0.51b> create table table33 -> (field01 inte -> ger, -> field02 -> char(30)); |
When inserting or updating records, do not spread a field's string across multiple lines, otherwise the line breaks are stored in the record:
Standard Operation mysql 5.0.51b> insert into table33 (field02) -> values -> ('Who thought of foo?'); | Line Break Stored in Record mysql 5.0.51b> insert into table33 (field02) -> values -> ('Pooh thought -> of foo.'); |
Results mysql 5.0.51b> select * from table33; +---------+---------------------+ | field01 | field02 | +---------+---------------------+ | NULL | Who thought of foo? | | NULL | Pooh thought of foo. | +---------+---------------------+ |
Insert Some More Records into the Table
Add this record
mysql 5.0.51b> insert into table01 (field01,field02,field03,field04,field05) values
-> (2, 'second', 'another', '1999-10-23', '10:30:00');
-> (2, 'second', 'another', '1999-10-23', '10:30:00');
Query OK, 1 row affected (0.00 sec)
Quotes must go around text values.
Standard date format is "yyyy-mm-dd".
Standard time format is "hh:mm:ss".
Quotes are required around the standard date and time formats, noted above.
Dates may also be entered as "yyyymmdd" and times as "hhmmss". If entered in this format, values don't need to be quoted.
Standard time format is "hh:mm:ss".
Quotes are required around the standard date and time formats, noted above.
Dates may also be entered as "yyyymmdd" and times as "hhmmss". If entered in this format, values don't need to be quoted.
Numeric values do not need to be quoted. This holds true regardless of the data type a column is formatted to contain (e.g. text, date, time, integer).
MySQL has a useful command buffer. The buffer stores the SQL statements you've entered thus far. Using it keeps you from having to retype the same commands over and over. Let's use this next step as an example.
Add another record using the command buffer (and optional date and time formats)
- Hit the up arrow key twice.
- Hit the ENTER key.
- Type in the new values between a pair parentheses and stick a closing semicolon on the end.
(3, 'a third', 'more foo for you', 19991024, 103004); - Hit the ENTER key.
Voilà!
Is it in there?
mysql 5.0.51b> select * from table01;
+---------+-----------+------------------+------------+----------+ | field01 | field02 | field03 | field04 | field05 | +---------+-----------+------------------+------------+----------+ | 1 | first | NULL | NULL | NULL | | 2 | second | another | 1999-10-23 | 10:30:00 | | 3 | a third | more foo for you | 1999-10-24 | 10:30:01 | +---------+-----------+------------------+------------+----------+
It's in there!
Now, we're almost done...
Updating Existing Records
Modify one field at a time
Again, be careful with syntax. Quote marks need to go around text but not around numbers.
mysql 5.0.51b> update table01 set field03='new info' where field01=1;
Query OK, 1 row affected (0.00 sec)
Change multiple fields at once
Remember to put commas between each field you're updating.
mysql 5.0.51b> update table01 set field04=19991022, field05=062218 where field01=1;
Query OK, 1 row affected (0.00 sec)
So, what's up with our data?
mysql 5.0.51b> select * from table01;
+---------+-----------+------------------+------------+----------+ | field01 | field02 | field03 | field04 | field05 | +---------+-----------+------------------+------------+----------+ | 1 | first | new info | 1999-10-22 | 06:22:18 | | 2 | second | another | 1999-10-23 | 10:30:00 | | 3 | third one | more foo for you | 1999-10-24 | 10:30:01 | +---------+-----------+------------------+------------+----------+
Update multiple records in one stroke
mysql 5.0.51b> update table01 set field05=152901 where field04>19990101;
Query OK, 3 rows affected (0.00 sec)
Survey says...
mysql 5.0.51b> select * from table01;
+---------+-----------+------------------+------------+----------+ | field01 | field02 | field03 | field04 | field05 | +---------+-----------+------------------+------------+----------+ | 1 | first | new info | 1999-10-22 | 15:29:01 | | 2 | second | another | 1999-10-23 | 15:29:01 | | 3 | third one | more foo for you | 1999-10-24 | 15:29:01 | +---------+-----------+------------------+------------+----------+
Wee haw!
Deleting Records
The delete command
mysql 5.0.51b> delete from table01 where field01=3;
Query OK, 1 row affected (0.01 sec)mysql 5.0.51b> select * from table01;
+---------+---------+----------+------------+----------+ | field01 | field02 | field03 | field04 | field05 | +---------+---------+----------+------------+----------+ | 1 | first | new info | 1999-10-22 | 15:29:01 | | 2 | second | another | 1999-10-23 | 15:29:01 | +---------+---------+----------+------------+----------+
Time to Call it Quits
mysql 5.0.51b> quit
Bye In Closing
Now you know some rudimentary commands for running a database in MySQL. Since MySQL is operated by executing SQL calls, you have a broad array of very powerful tools at your disposal. For instance, you're able to display data from several tables at once by joining related fields.
Similarly, SQL permits complex displays, updates or deletions of multiple records which fit specific criteria. So, your next step toward mastery is learning all about SQL.
James Hoffman has put a tutorial page up on the web entitled Introduction to Structured Query Language.
Another thing to note is MySQL offers good security features you'll need to use when operating on networks.
To learn more about MySQL and how to use it, the manual should be your first stop. Also, Paul DuBois' book, MySQL, comes highly recommended. In addition, the archives of the main list and the Win32 list are tremendous resources. The NYPHP user group has started a MySQL interest group you may find helpful.
If you're curious about database portability, you may find the Building Truly Portable Database Applications in PHP presentation interesting.
If you'll be developing hypertext interfaces to your databases using PHP, check out our SQL Solution™. It's a powerful, user friendly, platform independent API that will make your job a snap! Similarly, you might want to examine PEAR DB, a popular open source database abstraction layer (of which I'm the lead developer).
Also, if your scripts accept user input, the Form Solution™ is a handy tool for cleaning user input, generating HTML / XHTML compliant date/time form elements, validating and formatting date/time inputs and holding all variables submitted by a form. The result is improved security and data quality.
Starting and Stopping MySQL
Source
2.18.1.2. Starting and Stopping MySQL Automatically
Generally, you start the mysqld server in one of these ways:
...
If you use the Linux server RPM package (
Some vendors provide RPM packages that install a startup script under a different name such as mysqld.
If you install MySQL from a source distribution or using a binary distribution format that does not install mysql.server automatically, you can install it manually. The script can be found in the
To install mysql.server manually, copy it to the
As an alternative to the preceding setup, some operating systems also use
You can add options for mysql.server in a global
The following table shows which option groups the server and each startup script read from option files.
For backward compatibility, mysql.server also reads the
See Section 4.2.3.3, “Using Option Files”.
2.18.1.2. Starting and Stopping MySQL Automatically
Generally, you start the mysqld server in one of these ways:
- Invoke mysqld directly. This works on any platform.
- Run the MySQL server as a Windows service. The service can be set to start the server automatically when Windows starts, or as a manual service that you start on request. For instructions, see Section 2.10.4.7, “Starting MySQL as a Windows Service”.
- Invoke mysqld_safe, which tries to determine the proper options for mysqld and then runs it with those options. This script is used on Unix and Unix-like systems. See Section 4.3.2, “mysqld_safe — MySQL Server Startup Script”.
- Invoke mysql.server. This script is used primarily at system startup and shutdown on systems that use System V-style run directories, where it usually is installed under the name
mysql
. The mysql.server script starts the server by invoking mysqld_safe. See Section 4.3.3, “mysql.server — MySQL Server Startup Script”.
...
If you use the Linux server RPM package (
MySQL-server-VERSION
.rpm
), the mysql.server script is installed in the /etc/init.d
directory with the name mysql
. You need not install it manually. See Section 2.12, “Installing MySQL from RPM Packages on Linux”, for more information on the Linux RPM packages. Some vendors provide RPM packages that install a startup script under a different name such as mysqld.
If you install MySQL from a source distribution or using a binary distribution format that does not install mysql.server automatically, you can install it manually. The script can be found in the
support-files
directory under the MySQL installation directory or in a MySQL source tree. To install mysql.server manually, copy it to the
/etc/init.d
directory with the name mysql, and then make it executable. Do this by changing location into the appropriate directory where mysql.server is located and executing these commands: shell>Older Red Hat systems use thecp mysql.server /etc/init.d/mysql
shell>chmod +x /etc/init.d/mysql
/etc/rc.d/init.d
directory rather than /etc/init.d
. Adjust the preceding commands accordingly. Alternatively, first create /etc/init.d
as a symbolic link that points to /etc/rc.d/init.d
: shell>After installing the script, the commands needed to activate it to run at system startup depend on your operating system. On Linux, you can usecd /etc
shell>ln -s rc.d/init.d .
chkconfig
: shell> chkconfig --add mysql
On some Linux systems, the following command also seems to be necessary to fully enable the mysql script: shell> chkconfig --level 345 mysql on
On FreeBSD, startup scripts generally should go in /usr/local/etc/rc.d/
. The rc(8)
manual page states that scripts in this directory are executed only if their basename matches the *.sh
shell file name pattern. Any other files or directories present within the directory are silently ignored. In other words, on FreeBSD, you should install the mysql.server
script as /usr/local/etc/rc.d/mysql.server.sh
to enable automatic startup. As an alternative to the preceding setup, some operating systems also use
/etc/rc.local
or /etc/init.d/boot.local
to start additional services on startup. To start up MySQL using this method, you could append a command like the one following to the appropriate startup file: /bin/sh -c 'cd /usr/local/mysql; ./bin/mysqld_safe --user=mysql &'For other systems, consult your operating system documentation to see how to install startup scripts.
You can add options for mysql.server in a global
/etc/my.cnf
file. A typical /etc/my.cnf
file might look like this: [mysqld] datadir=/usr/local/mysql/var socket=/var/tmp/mysql.sock port=3306 user=mysql [mysql.server] basedir=/usr/local/mysqlThe mysql.server script supports the following options:
basedir
, datadir
, and pid-file
. If specified, they must be placed in an option file, not on the command line. mysql.server supports only start
and stop
as command-line arguments. The following table shows which option groups the server and each startup script read from option files.
Script | Option Groups |
---|---|
mysqld | [mysqld] , [server] , [mysqld- |
mysqld_safe | [mysqld] , [server] , [mysqld_safe] |
mysql.server | [mysqld] , [mysql.server] , [server] |
[mysqld-major_version
]
means that groups with names like [mysqld-4.1]
and [mysqld-5.0]
are read by servers having versions 4.1.x, 5.0.x, and so forth. This feature can be used to specify options that can be read only by servers within a given release series. For backward compatibility, mysql.server also reads the
[mysql_server]
group and mysqld_safe also reads the [safe_mysqld]
group. However, you should update your option files to use the [mysql.server]
and [mysqld_safe]
groups instead when using MySQL 5.0. See Section 4.2.3.3, “Using Option Files”.
'Can't drop database ''; database doesn't exist'
ERROR 1008 (HY000)
error: 'Can't drop database 'test'; database doesn't exist'
Remark:
does the OS user you use to execute mysql have create/write/read/execute rights to the ./test folder?Mysql ressources
IF EXISTS
is used to prevent an error from occurring if the database does not exist. If the default database is dropped, the default database is unset (the
DATABASE()
function returns NULL
). If you use
DROP DATABASE
on a symbolically linked database, both the link and the original database are deleted. DROP DATABASE
returns the number of tables that were removed. This corresponds to the number of .frm
files removed. The
DROP DATABASE
statement removes from the given database directory those files and directories that MySQL itself may create during normal operation: - All files with the following extensions.
.BAK
.DAT
.HSH
.MRG
.MYD
.MYI
.TRG
.TRN
.db
.frm
.ibd
.ndb
- All subdirectories with names that consist of two hex digits
00
-ff
. These are subdirectories used forRAID
tables. (These directories are not removed as of MySQL 5.0, when support forRAID
tables was removed. You should convert any existingRAID
tables and remove these directories manually before upgrading to MySQL 5.0. See Section 2.19.1.2, “Upgrading from MySQL 4.1 to 5.0”.) - The
db.opt
file, if it exists.
DROP DATABASE
statement again. Source
DROP DATABASE StatementUse this MySQL statement to delete a given database along with all its tables and data.
Statements
DROP {DATABASE|SCHEMA} [IF EXISTS] databaseExplanation
Use this MySQL statement to delete a given database along with all its tables and data. The addition of the IF EXISTS flag suppresses an error message if the database does not already exist. You must have the DROP privilege for the database to be able to delete it in MySQL.
Here is an example of this MySQL statement's use:
DROP DATABASE IF EXISTS test; Query OK, 6 rows affected (0.42 sec)The number of tables in MySQL that have been deleted is returned in the rows affected count. If the database doesn't exist or if there are other files in the database's filesystem directory, an error message will be displayed. The tables will be deleted if other files exist, but the foreign file and the directory for the database won't be removed. They will have to be deleted manually at the command line using a filesystem command such as rm in Unix or del in Windows. Here's an example in which a foreign file is found in the database directory when dropping a database:
DROP DATABASE IF EXISTS test; ERROR 1010 (HY000): Error dropping database (can't rmdir './test/', errno: 17) SHOW TABLES FROM test; Empty set (0.00 sec) SHOW DATABASES LIKE 'test'; +-----------------+ | Database (test) | +-----------------+ | test | +-----------------+In this example, we've attempted to drop the database, but were unsuccessful because of a foreign file located in the database's directory at the filesystem level. The tables were all dropped as indicated from the results of the SHOW TABLES statement, but the database remains. After manually deleting the foreign file, we run the MySQL statement,DROP DATABASE again:
DROP DATABASE IF EXISTS test; Query OK, 0 rows affected (0.43 sec) DROP DATABASE test; ERROR 1008 (HY000): Can't drop database 'test'; database doesn't existThis time the statement was successful, as indicated by our extra attempt without the IF EXISTS flag. No tables were dropped by the second attempt because they were all deleted on the first attempt, so the number of rows affected was 0.
If a database is dropped, any user privileges specific to the database (e.g., privileges listed in the db table of the mysql database) are not automatically deleted. Therefore, if a database is later created with the same name, those user privileges will apply to the new database, a potential security risk.
Gmail addresses
Source
9. Create unlimited disposable email addresses with Gmail
Take the following example:
That’s right, you can add one or more dots ANYWHERE between your username and send messages to that ‘new’ email. All of those messages will arrive to your old (without dots) email. Hard to explain without a picture. But somehow Google did find a way to do it…
9. Create unlimited disposable email addresses with Gmail
Take the following example:
That’s right, you can add one or more dots ANYWHERE between your username and send messages to that ‘new’ email. All of those messages will arrive to your old (without dots) email. Hard to explain without a picture. But somehow Google did find a way to do it…
Sometimes you may receive a message sent to an address that looks like yours but has a different number or arrangement of periods. While we know it might be unnerving if you think someone else’s mail is being routed to your account, don’t worry: both of these addresses are yours.
Gmail doesn’t recognize dots as characters within usernames, you can add or remove the dots from a Gmail address without changing the actual destination address; they’ll all go to your inbox, and only yours. In short:
All these addresses belong to the same person. You can see this if you try to sign in with your username, but adding or removing a dot from it. You’ll still go to your account.
- homerjsimpson@gmail.com = hom.er.j.sim.ps.on@gmail.com
- homerjsimpson@gmail.com = HOMERJSIMPSON@gmail.com
- homerjsimpson@gmail.com = Homer.J.Simpson@gmail.com
Akonadi - The PIM Storage Service
Akonadi es un framework de gestión de información personal, desarrollado por el proyecto KDE. Akonadi funciona como un almacén extensible de información para todas las aplicaciones de gestión de información personal. Además Akonadi incluye otros componentes como mecanismos de búsqueda,y una Biblioteca para acceso y notificación de cambios en los datos.
Akonadi se comunica con servidores para enviar y recibir datos, en vez de las aplicaciones a través de una API especializada. La información puede ser recibida de Akonadi mediante un modelo diseñado para recoger información específica (correo, calendario, contactos, etc). La aplicación en sí estará formada de visores y editores que mostrarán información al usuario y le ayudaran a introducirla. Akonadi también soportará metadatos creados por las aplicaciones.
Como Akonadi se encarga de recibir y almacenar datos, lo cual es la parte tradicionalmente difícil del desarrollo de aplicaciones de este ámbito, éste se vuelve mucho más fácil.
Akonadi is a storage service for personal information management (PIM) data and metadata. It is one of the “pillars” (core technologies) behind the KDE SC 4 project, although it is designed to be used in any desktop environment. It is extensible and provides concurrent read, write, and query access.
Akonadi provides unique desktop-wide object identification and retrieval.[1] It functions as an extensible data storage for all PIM applications. In KDE 3 each PIM application had different data storage and handling methods, which led to several implementations of essentially the same features. Besides data storage, Akonadi has several other components including search, and a library (cache) for easy access and notification of data changes.
Akonadi communicates with servers to fetch and send data instead of applications through a specialized API. Data can then be retrieved from Akonadi by a model designed to collect a specific data (mail, calendar, contacts, etc). The application itself is made of viewers and editors to display data to the user and let them input data. Akonadi also supports metadata created by applications.[2]
Because Akonadi takes care of data storage and retrieval, which are traditionally the difficult parts of creating a PIM application, development of PIM applications is made much easier. In fact, the Mailody developer Tom Albers demonstrated how a mail reader could be created in only 10 minutes using Akonadi.[3]
Akonadi is a storage service for personal information management (PIM) data and metadata. It is one of the “pillars” (core technologies) behind the KDE SC 4 project, although it is designed to be used in any desktop environment. It is extensible and provides concurrent read, write, and query access.
Akonadi provides unique desktop-wide object identification and retrieval.[1] It functions as an extensible data storage for all PIM applications. In KDE 3 each PIM application had different data storage and handling methods, which led to several implementations of essentially the same features. Besides data storage, Akonadi has several other components including search, and a library (cache) for easy access and notification of data changes.
Akonadi communicates with servers to fetch and send data instead of applications through a specialized API. Data can then be retrieved from Akonadi by a model designed to collect a specific data (mail, calendar, contacts, etc). The application itself is made of viewers and editors to display data to the user and let them input data. Akonadi also supports metadata created by applications.[2]
Because Akonadi takes care of data storage and retrieval, which are traditionally the difficult parts of creating a PIM application, development of PIM applications is made much easier. In fact, the Mailody developer Tom Albers demonstrated how a mail reader could be created in only 10 minutes using Akonadi.[3]
-------------------
KDE 4 tiene un entorno de escritorio llamado Plasma. Hay muchos componentes nuevos por debajo:
Soprano, Akonadi, Nepomuk, Strigi
Thomas McGuire, un desarrollador de KDE, ha publicado en su blog personal un completo artículo explicando cada uno de ellos.
Soprano
El primer componente del que vamos a hablar no es propio de KDE, sino que es una biblioteca de Qt.
Soprano es un motor de almacenamiento semántico, es decir, que almacena información en sentencias. Estas sentencias no son ni más ni menos que mapas conceptuales, donde se relacionan conceptos (sujetos y predicados) con acciones (verbos). Podemos ver un ejemplo con la siguiente figura:
En Soprano, este almacenamiento semántico sigue la especificación RDF y para realizar consultas se utiliza el lenguaje SPARQL.
Nepomuk
Esta es una biblioteca propia de KDE que funciona como intermediaria entre las aplicaciones y Soprano. Nepomuk incluye definiciones de lenguaje y métodos específicos orientados a los posibles usos que puedan darle las aplicaciones de KDE a Soprano.
Estas definiciones de lenguaje (ontologías) sirven para normalizar el almacenamiento. Sin una ontología definida, una aplicación podría almacenar «Mónica vive en Sevilla» y otra que «Mónica reside en Sevilla» y los datos de una aplicación no servirían para la otra. Respetando la ontología se consigue una información mucho más útil.
Ahora veremos qué clase de datos se almacenan, porque eso es lo que hacen exactamente Strigi y Akonadi, almacenar.
Strigi
Strigi es el componente encargado de recoger información del sistema de archivos, extrayendo toda la información relevante para almacenarla, pasándosela a Nepomuk.
El problema con este componente es que mirar en los archivos, extraerles la información y almacenarla consume una cantidad enorme de recursos. Tampoco está tan claro qué información es relevante y cuál no, ya que en un determinado momento podría llegarnos a interesar buscar todas las imágenes de menos de 300px de ancho en las que predomine el color azul, pero es poco probable.
Akonadi
Además de ser el culpable de que KDE dependa de MySQL, este componente es el encargado de obtener información referente a contactos, correos y calendarios (y todo lo que entre dentro del concepto de PIM) de todo tipo de fuentes externas y de proveer un acceso unificado a todos esos datos a las aplicaciones.
Lógicamente, Akonadi necesita almacenar en algún sitio todos los datos que maneja, ya que se obtienen de fuentes muy heterogéneas. Es por eso que utiliza una base de datos relacional y depende de MySQL (aunque en un futuro soportará otras soluciones como SQLite).
Los datos que son relevantes para las aplicaciones se pasan a Nepomuk para poder realizar búsquedas aprovechando las ventajas que ofrecen las bases de datos semánticas
Mission Statement We intend to design an extensible cross-desktop storage service for PIM data and meta data providing concurrent read, write, and query access. It will provide unique desktop wide object identification and retrieval.
Features
Features
- Common PIM data cache
- Type agnostic design
- Extensible
- Generic offline access, change recording and replay
- Generic conflict detection and resolution
- Resources are groupable by profile
- Items composed of independently retrievable multiple parts
- Zero-copy retrieval possible
- Concurrent access allows background activity independent of UI client
- Syncing mail, calendar, addressbooks to remote servers
- Syncing with mobile devices
- Permits semantic desktop infrastructure to access PIM data
- Archiving
- Indexing
- Out-of-process search
- Multi-process design
- Crash isolation
- Large items can't block whole system
- Linkage by IPC allows proprietary components
- Thin client installations can share components for scalability
Architecture
This diagram illustrates the basic aspects of the Akonadi architecture. It's built around a central storage which is accessed through a language and platform neutral protocol. On top of this protocol a set of APIs is provided which are used to access the PIM data in the storage. There are two kinds of users of the APIs. First, there are the applications like Kontact, KOffice or Evolution. Second, there are resources which transfer data between the central Akonadi storage and external sources. This can be groupware servers like OX or GroupWise, other storage mechanisms like iCalendar files or access through standard protocols like POP or IMAP.
The diagram only lists some example applications and resources. Akonadi is designed to be accessible to a broad range of applications and resource implementations. It's part of the concept that it's easy to add additional APIs and users of the APIs.
Code
Akonadi is currently being developed in the KDE Git and Subversion repositories. You find the Akonadi server at kdesupport/akonadi (Git) and the KDE Akonadi client libraries at trunk/KDE/kdepimlibs/akonadi (still SVN).
Releases of the server can be downloaded here, the client libraries are included in the regular KDE releases beginning with KDE 4.1.
Monday, November 29, 2010
Copy drivers
All Sources
DriverMax 5.6.0.799 Free
Semper driver backup free (aka net-runna-driverbackup)
Semper Driver Backup provides backup and recovery of Windows driver files, which is great for re-installing or building Windows on multiple systems. Semper Driver Backup allows driver backup to and from local systems.
Semper Driver Backup has been tested on Windows XP, Windows Vista and Windows 7. It is ideal for use when Microsoft's Sysprep is combined with any imaging and deployment solution like Semper Continuity Suite.
DriverMax 5.6.0.799 Free
download.cnet.com/DriverMax/3000-18513_4-10572602.html
Semper driver backup free (aka net-runna-driverbackup)Semper Driver Backup has been tested on Windows XP, Windows Vista and Windows 7. It is ideal for use when Microsoft's Sysprep is combined with any imaging and deployment solution like Semper Continuity Suite.
Double Driver is a very simple and useful tool which not only allows you to view all the drivers installed on your system but also allows you to backup, restore, save and print all chosen drivers.
Double Driver analyzes your system and lists the most important driver details such as version, date, provider, etc. All drivers that are found can easily be backed up the application and easily restored at a later point in one go.
Double Driver is freeware.
Microsoft Visio -Alternativas Open Source
Source
- ArgoUML
La herramienta open source para UML preferida por muchos de nosotros. Esta escrito en JAVA, esto hace que la aplicación pueda ser multiplataforma. Soporta completamente el estándar UML. Mucha facilidad para usar, interface intuitiva. Tiene soporte a generación de código para los lenguajes mas usados, C++ y C# por ejemplo. - StarUML 5.0
StarUML es una impresionante aplicación open source para diseño de diagramas UML 2 y MDA (Model Driven Architecture). Tiene opciones de generación de código para Java, C, C++ y C#, además de documentación en los formatos mas usados como .DOC por ejemplo. - Kivio
Una herramienta para creación de diagramas UML y de flujo. Kivio es parte de Open Office KOffice – no es posible utilizarlo sin instalar Open Office- posee una gran interface, robusto y estable para las tareas necesarias que se demandan a este tipo de aplicaciones. - DIA
Herramienta Open Source para creación de diagramas. Aplicación GTK+ con arquitectura totalmente abierta, los archivos generados son simples XML.
Sunday, November 28, 2010
Windows Vista clean install
Source
1. Insert the Vista DVD into the DVD drive while your current Vista is running.
WARNING: Do not boot the computer and run the Vista installation DVD from boot. A upgrade install will not work this way.
2. Click on Install Now to start the upgrade. (See screenshot below)
NOTE: If AutoPlay does not load the Vista setup screen, then open your DVD drive in Computer and click on the Setup file.
NOTE: It will install faster if you select Do not get the latest updates for installation. You can install them later through Windows Update.
WARNING: If you do type in the same activated product key that you already have installed, then you can end up in Reduced Functionality Mode.
5. Leave the Automatically activate Windows when I'm online box unchecked.
6. Click on Next.
9. Check the I have selected the edition of Windows that I purchased box and click on Next. (See screenshot below)
12. Remove the Vista installation DVD.
13. Check to see if any files are missing. If so look in the bolded files shown in step 14 below to see if they are in there. You can then just copy them back.
14. Run Disk Cleanup.
- If Vista is still not working properly afterwards, then a Clean Install would be recommended.
- You may need to reinstall some of your drivers after the Repair (upgrade) install.
- You will not be able to do a upgrade install in Safe Mode.
WARNING: Do not boot the computer and run the Vista installation DVD from boot. A upgrade install will not work this way.
2. Click on Install Now to start the upgrade. (See screenshot below)
NOTE: If AutoPlay does not load the Vista setup screen, then open your DVD drive in Computer and click on the Setup file.
3. If you want Vista to check for updates during the installation, then click on that to select it. (See screenshot below)
NOTE: It will install faster if you select Do not get the latest updates for installation. You can install them later through Windows Update.
4. Do not type in a product key. (See screenshot below)
WARNING: If you do type in the same activated product key that you already have installed, then you can end up in Reduced Functionality Mode.
5. Leave the Automatically activate Windows when I'm online box unchecked.
6. Click on Next.
7. Click on the No button for the Do you want to enter your product key now? prompt. (See screenshot below)
8. Select which edition of Vista you have. (See screenshot below)
9. Check the I have selected the edition of Windows that I purchased box and click on Next. (See screenshot below)
10. Click on the Upgrade option. (See screenshot below)
11. Follow any instructions left until Vista is through installing and has rebooted to the final welcome screen on the Vista desktop.
12. Remove the Vista installation DVD.
13. Check to see if any files are missing. If so look in the bolded files shown in step 14 below to see if they are in there. You can then just copy them back.
14. Run Disk Cleanup.
A) If listed, check Files discarded by Windows upgrade. (See screenshot below)
NOTE: These will be the leftover upgrade files, C:\Windows.old, C:\$INPLACE.~TR and C:\$WINDOWS.~Q, that did not get copied over. If any personal username files are missing, it would be in these folders.
B) Click on OK to delete it.
15. Now all you need to do is to activate Vista.
A) Right click on Computer (Start Menu) and click on Properties, or open the Control Panel (Classic View) and click on the System icon.
B) Scroll down a bit and click on: Activate Windows Now. (See screenshot below)
System File Checker tool
Source
How to use the System File Checker tool (SFC.exe) to troubleshoot missing or corrupted system files on Windows Vista or on Windows 7.
If a Windows Resource Protection (WRP) file is missing or is corrupted, Windows may not behave as expected. For example, some Windows functions may not work, or Windows may crash. The System File Checker tool (SFC.exe) scans for missing or corrupted system files and repairs them.
Use the System File Checker tool (SFC.exe) to determine which file is causing the issue, and then replace the file. To do this, follow these steps:
If the System File Checker tool cannot repair a file, follow these steps:
How to use the System File Checker tool (SFC.exe) to troubleshoot missing or corrupted system files on Windows Vista or on Windows 7.
If a Windows Resource Protection (WRP) file is missing or is corrupted, Windows may not behave as expected. For example, some Windows functions may not work, or Windows may crash. The System File Checker tool (SFC.exe) scans for missing or corrupted system files and repairs them.
Use the System File Checker tool (SFC.exe) to determine which file is causing the issue, and then replace the file. To do this, follow these steps:
- Open an elevated command prompt. To do this, click Start, click All Programs, click Accessories, right-click Command Prompt, and then click Run as administrator. If you are prompted for an administrator password or for a confirmation, type the password, or click Allow.
- Type the following command, and then press ENTER: sfc /scannowThe sfc /scannow command scans all protected system files and replaces incorrect versions with correct Microsoft versions.
- Open an elevated command prompt.
- Type the following command, and then press ENTER: findstr /C:"[SR] Cannot repair member file" %windir%\logs\cbs\cbs.log >sfcdetails.txtNote The Sfcdetails.txt file contains details from every time that the System File Checker tool has been run on the computer. The file includes information about files that were not repaired by the System File Checker tool. Verify the date and time entries to determine the problem files that were found the last time that you ran the System File Checker tool.
- Type the following command, and then press ENTER: edit sfcdetails.txtThe Sfcdetails.txt file uses the following format:Date/Time SFC detail
2007-01-12 12:10:42, Info CSI 00000008 [SR] Cannot repair member file [l:34{17}]"Accessibility.dll" of Accessibility, Version = 6.0.6000.16386, pA = PROCESSOR_ARCHITECTURE_MSIL (8), Culture neutral, VersionScope neutral, PublicKeyToken = {l:8 b:b03f5f7f11d50a3a}, Type neutral, TypeName neutral, PublicKey neutral in the store, file is missing
- At an elevated command prompt, type the following command, and then press ENTER: takeown /f Path_And_File_NameFor example, type takeown /f E:\windows\system32\jscript.dll.
- Type the following command, and then press ENTER to grant administrators full access to the file: icacls Path_And_File_Name /GRANT ADMINISTRATORS:FFor example, type icacls E:\windows\system32\jscript.dll /grant administrators:F.
- Type the following command to replace the file with a known good copy of the file: Copy Path_And_File_Name_Of_Source_File Path_And_File_Name_Of_DestinationFor example, type copy E:\temp\jscript.dll E:\windows\system32\jscript.dll.
Dropbox
futurezone.at
Seine Verbreitung verdankt der Online-Backup-Dienst Dropbox einer simplen Benutzerführung. Mitbegründer Drew Houston spricht mit FUTUREZONE über Mitbewerber, Millisekunden und USB-Sticks, die allzu schnell verloren gehen.
Der Eingang zur Internetwolke kann so vertraut aussehen wie die Oberfläche des Windows Explorers. 2007 von den beiden MIT-Studenten Arash Ferdowsi und Drew Houston gegründet, sollte Dropbox zwei Aufgaben erledigen: Daten zwischen Windows-, Mac- und Linux-Computern zu synchronisieren und dabei ein Backup in der Cloud zu erstellen. Im heurigen Februar verkündete das Startup schließlich, mehr als vier Millionen Benutzer zu haben.
Mit Apps für Android, Blackberry sowie iPad und iPhone spielt Dropbox inzwischen auch im Smartphone-und Tablet-Bereich mit. Eine im Mai freigegebene Programmierschnittstelle ermöglicht es, Apps mit dem Cloud-Dienst zu verknüpfen. Auf diesem Weg lassen sich beispielsweise mit der iPad-App Droptext auf Dropbox gelagerte Textdateien bearbeiten, ebenso wie neu erstellte Dokumente speichern.
Mit Apps für Android, Blackberry sowie iPad und iPhone spielt Dropbox inzwischen auch im Smartphone-und Tablet-Bereich mit. Eine im Mai freigegebene Programmierschnittstelle ermöglicht es, Apps mit dem Cloud-Dienst zu verknüpfen. Auf diesem Weg lassen sich beispielsweise mit der iPad-App Droptext auf Dropbox gelagerte Textdateien bearbeiten, ebenso wie neu erstellte Dokumente speichern.
Die Kalifornier spendieren ihren Benutzern zwei Gigabyte an Speicherplatz. Wer mehr benötigt, muss zwischen zehn und 20 Dollar monatlich zahlen. Die FUTUREZONE sprach mit Mitbegründer Drew Houston:
FUTUREZONE: Dropbox ist intuitiv benutzbar und macht daher auch unter wenig Technikaffinen die Runde. Dennoch gibt es mit Anbietern wie Box oder SugarSync einige Konkurrenz. Wie weit glauben Sie dem Mitbewerb voraus zu sein?
Drew Houston: Wir haben sehr darauf aufgepasst, wie wir die Dinge angehen und ich glaube, unsere Apps sind gut und die Benutzer zufrieden. Wir hören auch häufig von Leuten, die von anderen Services zu uns wechseln. Webseiten wie Compete.com sagen zudem, dass wir uns von der Konkurrenz absetzen.
FUTUREZONE: Bereitet es Ihnen nicht Sorgen, dass Google sein Cloud-Angebot plötzlich umgestaltet und ähnlich wie Dopbox aussehen lässt? Oder Apple MobileMe auf Vordermann bringen könnte?
Wir denken da schon daran. Aber das war immer im Hinterkopf, seit wir begonnen haben. Wir konzentrieren uns lieber darauf, unsere Benutzer glücklich zu machen, und das hat bisher ziemlich gut funktioniert. Wir beschäftigen uns also mit dem Thema, haben deswegen aber keine schlaflosen Nächte.
FUTUREZONE: Dropbox-Benutzer erhalten zwei Gigabyte an Speicherplatz gratis, 100 Gigabyte kosten monatlich 20 Dollar. Um fünf Dollar weniger bekommt man bei Box.net bereits 500 Gigabyte, außerdem sind fünf Gigabyte gratis. Ist Dropbox zu teuer?
Wir geben den Leuten immer wieder die Möglichkeit, kostenlos zusätzlichen Speicherplatz zu bekommen (etwa über Empfehlungen des Dienstes an Freunde, Anm.), und das ist wirklich populär. Wir sehen das Ganze nicht in Kategorien wie „wie viele Dollar und Cent pro Gigabyte“. Vielmehr schaffen wir etwas, das einfach zu benutzen ist und wo das Benutzererlebnis stimmt.
FUTUREZONE: Können Sie die technische Herausforderung hinter Dropbox erläutern?
Wir hantieren mit riesigen Speichermengen. Die Leute speichern bei Dropbox jeden Tag mehr Dateien als Tweets abgesetzt werden. Wir reichen hunderte Millionen an Mitteilungen herum und achten dabei besonders auf Geschwindigkeit: wie viele Millisekunden dauert es bis eine Datei vom Desktop-Computer daheim auf dem Laptop landet. Das wirklich schnell, verlässlich und sicher über die Bühne zu bringen, ist wirklich herausfordernd. Als wir mit dem Unternehmen begonnen haben, waren wir der Ansicht, dass es keinen Dienst gab, der das alles erledigt - zumindest nicht so wie wir uns das vorstellten.
FUTUREZONE: Und die Dateien liegen bei Amazon?
Genau. Die gesamten Daten unserer Kunden liegen verschlüsselt bei Amazons S3 (Simple Storage Service, Anm.)
FUTUREZONE: Wie entstand die Idee für Dropbox?
Wie vielen Leuten wurde es auch mir zu viel, dass ich mir ständig selbst irgendwelche Dateien mailte oder einen USB-Stick mit mir herumtrug. Den Speicherstick hätte ich ein paar Mal auch fast verloren. Ich schloss gerade mein Bachelorstudium am MIT ab, als ich eines Tages so frustriert war, weil ich meinen USB-Stick nicht dabei hatte, dass ich einfach zu programmieren anfing.
FUTUREZONE: Die Programmierschnittstelle für mobile Lösungen, die Sie im Frühjahr veröffentlichten, war ein entscheidender Schritt, um mobile Apps mit Dropbox zu integrieren. Was könnte dies für Smartphone-Benutzer demnächst bedeuten?
Wir machen uns viele Gedanken darüber, was Leute im Alltag so brauchen, um unterwegs an ihre wichtigsten Daten heranzukommen. Uns begeistern gerade ein paar Sachen, die einem dabei helfen, auf Multimedia zuzugreifen und diese abzuspielen - und das nahtlos, weil eben alles in der Cloud ist. Dadurch werden Zugriff und gemeinsame Benutzung einfacher.
FUTUREZONE: Ist es denkbar, dass iPad-User in Zukunft ihre iWork-Dateien auf Dropbox sichern können?
Als Benutzer würde mir das natürlich gefallen. Leider ist Apple da nicht besonders kooperativ. Aber wir werden sehen.
FUTUREZONE: Gibt es Pläne für Windows 7?
Wie viele andere auch, war ich positiv überrascht von den tollen Bewertungen. Aber wir denken noch darüber nach, wann wir es unterstützen.
FUTUREZONE: Über den Anteil zahlender Kunden hält sich Dropbox stets bedeckt. Könnten Sie sagen, wieviel Speicher zahlende Kunden durchschnittlich belegen?
Dazu kann ich leider nichts sagen.
FUTUREZONE: Es gibt immer wieder Gerüchte über etwaige Übernahmen von Dropbox. Können Sie verraten, ob Sie gerade mit jemandem im Gespräch sind?
Wir kommentieren diese Dinge nicht. Wir sind nicht daran interessiert, das Unternehmen zu verkaufen.
GNU-Linux Distros
A Linux distribution (also called GNU/Linux distribution by some vendors and users) is a member of the family of Unix-like operating systems built on top of the Linux kernel. Such distributions (often called distros for short) consist of a large collection of software applications such as word processors, spreadsheets, media players, and database applications. The operating system will consist of the Linux kernel and, usually, a set of libraries and utilities from the GNU project, with graphics support from the X Window System. Distributions optimized for size may not contain X and tend to use more compact alternatives to the GNU utilities, such as Busybox, uClibc, or dietlibc. There are currently over six hundred Linux distributions. Over three hundred of those are in active development, constantly being revised and improved.
Because most of the kernel and supporting packages are free and open source software, Linux distributions have taken a wide variety of forms — from fully featured desktop and server operating systems to minimal environments (typically for use in embedded systems or for booting from a floppy disk). Aside from certain custom software (such as installers and configuration tools), a distribution is most simply described as a particular assortment of applications installed on top of a set of libraries married with a version of the kernel, such that its "out-of-the-box" capabilities meet most of the needs of its particular end-user base.
One can distinguish between commercially-backed distributions, such as Fedora (Red Hat), openSUSE (Novell), Ubuntu (Canonical Ltd.), and Mandriva Linux (Mandriva), and entirely community-driven distributions, such as Debian and Gentoo, though there are other distributions that are driven neither by a corporation nor a community, perhaps most famously Slackware.
Contents
Red Hat Enterprise Linux 6
Source Thorsten Leemhuis
Mit der neuen Version 6 seines Flaggschiffs greift Red Hat die technischen Entwicklungen der letzten Jahre auf. Entsprechend viel hat sich gegenüber der Vorversion des Profi-Linux geändert.
VirtualisierungBei der Virtualisierung setzt Red Hat nun ausschließlich auf KVM (Kernel-based Virtual Machine) als Hypervisor. Damit geht das Unternehmen den nächsten Schritt im langfristigen Abschied von Xen, bei der Einführung von RHEL 5 im März 2007 noch die Virtualisierungslösung der Wahl. KVM war 2009 mit der RHEL 5.4 als zweiter Hypervisor hinzugestoßen, nachdem Red Hat die hinter KVM stehende Firma Qumranet übernommen hatte. Im Rahmen der noch bis mindestens 2014 gewarteten 5er-Serie liefert Red Hat aber weiter Unterstützung für Xen.
RHEL 6 muss auf Festplatte installiert werden; eine Live-CD gibt es nicht. KVM beherrscht im Unterschied zu Xen keine Paravirtualisierung kompletter Betriebssysteme und ist dadurch auf Prozessoren mit Virtualisierungsunterstützung angewiesen – die findet sich heute auch in vielen günstigen Desktop- und Notebook-CPUs. Mittlerweile hat das jüngere KVM im Funktionsumfang und in der Performance in vielen Bereichen mit Xen gleichgezogen; es bietet zudem einige Funktionen, die Xen nicht beherrscht. Die Performance von mit KVM virtualisierten RHEL-6-Gästen soll nahe an die heranreichen, die RHEL beim Betrieb direkt auf der Hardware erzielt. Ein Tool kann unter RHEL 5 angelegte Xen-Gäste konvertieren, damit sie unter RHEL 6 mit KVM arbeiten.
Neu ist auch Kernel Samepage Merging (KSM), das identische Speicherbereiche verschiedener Prozesse zusammenlegt – das kann den Speicherverbrauch auf dem Host spürbar reduzieren, wenn in mehreren KVM-Gästen die gleichen Betriebssysteme und Anwendungen laufen oder viel Speicher ungenutzt ist. Flotteren Netzwerkdurchsatz für Gastsysteme versprechen Techniken wie macvtap (beschleunigt den Datenaustausch zwischen Gastsystemen), vhost-net (effizienterer Zugriff aus dem Gast auf die Netzwerk-Hardware) und SR-IOV (Single Root I/O Virtualization and Sharing Specification).
Auf der nächsten Seite: Königsklasse
Subscribe to:
Posts (Atom)