Przez ostatnie niemal 2 tygodnie pisałem swoją pracę magisterską. Wciąż jestem w polu, ale w sumie wygląda to coraz lepiej. Już dawno postanowiłem, że napiszę ją w latex'u i jak na razie nie żałuje decyzji. Pisze się naprawdę sprawnie. Najfajniejsze jest to, że nie ma problemów z aktualizacją obrazków i bardzo łatwo jest rozbić cały dokument na osobne piliki. Boli tylko brak sprawdzania pisowni. Jakoś nie udało mi się tego skonfigurować. Teoretycznie Eclipse z dodatkiem Texclipse potrafi skorzystać ze słowników aspell. Niestety sprawa robiła się o kodowanie dokumentu. Nie jest to na szczęście zbyt bolesne, bo wciąż można skorzystać z innego softu, choćby open office'a.
Zanim zacząłem pisać pracę walczyłem jeszcze trochę z tym ładowaniem plików md5. Lipa. Coś mi tu umyka. Nie wiem, czy to błąd w kodzie, czy nie zrozumienie jakiegoś aspektu, np jak posługiwać się kwaternionami. W każdym bądź razie lipa. Udało mi się doprowadzić do tego, że szkielet mojego modelu animował się poprawnie. Jednak gotowiec ma coś nie tak z orientacją. Pozycje są poprawne. Brakło mi czasu, żeby problem rozwiązać.
Co do tego wszystkiego ma Nokia 3120 clasic ? Ano jest pretekstem do spłodzenia tego posta. Otóż mój szanowny rodziciel, wszedł w posiadanie tego modelu, drogą podpisania umowy z jednym z operatorów sieci gsm w Polsce. Telefon potęgą nie jest, czego się zresztą spodziewać po gratisie. Nie spodziewałem się jednak, że aż tak.
Wydawałoby się prosta sprawa skopiować kontakty z jednego telefonu na drugi. Poprzednik to sony erricson. Oba telefony posiadają moduł bluetooth. No to kopiujemy całą listę przez BT i po bólu ;)
Otóż nie. SE potrafi wysłać wszystkie kontakty na raz w formie pliku vcf. Nokia natomiast takiego pliku zrozumieć nie potrafi. Grrr.
Szybko okazało się, że problemem jest to iż jest to lista. Pojedynczą wizytówkę można przesłać. Czyli co, na SE strzałka w dół > opcje > wiecej > zaawansowane > wyslij > bt, Nokia > akceptuj > zapisz. I tak 380 razy. Masakra.
Po długim kombinowaniu wyszło, że takie wizytówki można wysyłać także z komputera. Byleby nie była to lista, a pojedyncze wpisy. Na szybko napisałem kawałek kodu do konwersji listy na osobne pliki.
Nie zagłębiałem się przy tej okazji nadmiernie w strukturę pliku .vcf. Także raczej nie należy się na to powoływać. Programik zadziałał zgodnie z oczekiwaniem, a cała operacja zakończyła się pełnym sukcesem, dając tym samym Nokii pierwszą szansę na dłuższe testy u mnie w domu. Wcześniej była tylko jedna i wytrzymała jeden dzień, zanim mnie szlag trafił ;)
/*
* main.cpp
*
* Created on: 2009-08-28
* Author: Adam Śmigielski
* E-mail: adam.smigielski@gmail.com
* Copyright: Adam Śmigielski
*/
#include <fstream>
#include <iostream>
#include <stdio.h>
using namespace std;
int main(int argc, char * argv[])
{
const char * filename = 0;
if (2 >= argc)
{
filename = argv[1];
cout << "Plik: " << filename << endl;
}
else
{
cout << "Podaj nazwe pliku" << endl;
return 1;
}
fstream in;
fstream out;
in.open(filename, fstream::in);
if (false == in.is_open())
{
cout << "Plik nie istnieje" << endl;
return 2;
}
else
{
cout << "Otwarto plik" << endl;
}
char buffer[256];
unsigned int count = 0;
char name[] = "result\\xxxx.vcf";
char rev[] = "REV:20090828T071515Z";
int revsize = strlen(rev);
while (true)
{
in.getline(buffer, 256);
cout << buffer << endl;
if (0 == strcmp(buffer, "BEGIN:VCARD"))
{
sprintf(name + 7, "%04d.vcf", count++);
cout << "Nazwa pliku: " << name << endl;
out.open(name, fstream::out);
if (false == out.is_open())
{
cout << "Nie udalo sie otworzyc pliku" << endl;
return 2;
}
else
{
cout << "Otwarto plik" << endl;
}
out << buffer << endl;
while (true)
{
in.getline(buffer, 256);
cout << buffer << endl;
if (0 != strstr(buffer, "X-IRMC-LUID:"))
{
out << rev << endl;
}
else if (0 == strcmp(buffer, "END:VCARD"))
{
out << buffer << endl;
break;
}
else if (0 != strstr(buffer, "TEL:"))
{
out << "TEL;CELL:" << buffer + 4 << endl;
}
else
{
out << buffer << endl;
}
}
out.close();
}
else if (0 == strcmp(buffer, ""))
{
break;
}
}
in.close();
return 0;
}
EDIT
Właśnie odkryłem, że mój sprytny sposób na zamieszczanie kodu wyświetla bool'e na czarno. Ehh, już zmienione. Teraz będą zielono niebieskawe :)