|
|
|
|
Ich hab n Problem meinen GCC/G++ richtig zu benutzen und in SublimeText einzustellen. Ganz schamlos moechte ich mal meinen Stackoverflow Post dazu hier verlinken, vieleicht kann ja einer der C++ User hier mal draufschauen.
Post auf Stackoverflow
Ich eier damit schon nen ganzen Tag umher und raff einfach nicht, was schief laeuft.
|
|
|
|
|
|
|
Wieso nicht einfach am Anfang lassen? Und wieso zur Hölle baust du dir kein Makefile?
|
|
|
|
|
|
|
| Zitat von Oli
Wieso nicht einfach am Anfang lassen? Und wieso zur Hölle baust du dir kein Makefile?
| |
/e: Ich verstehe das Problem nicht. WAS funktioniert nicht? Kompilieren? Ausführen? Liegt es an der Library? Hast du ein Beispielprogramm, mit dem es NICHT funktioniert? In meinen tests ist es egal, an welcher Stelle -std=c++11 steht.
|
|
|
|
|
|
|
Ok, ich paste mal.
Dieses Programm:
|
Code: |
#include <iostream>
#include <regex>
int main()
{
std::cout << "Laeuft." << std::endl;
return 0;
} |
|
Und dieses Buildfile:
|
Code: |
{
"cmd": ["g++", "-std=c++0x", "${file}", "-o", "${file_path}/${file_base_name}"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++",
"variants":
[
{
"name": "Run",
"cmd":["bash", "-c", "g++ -std=c++0x '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"]
}
]
} |
|
Kompilieren prima.
Dieses Programm:
|
Code: |
#include <iostream>
#include <pqxx/pqxx>
int main(int argc, char* argv[])
{
try
{
pqxx::connection C( "dbname=testdb user=postgres password=123 hostaddr=192.168.0.1 port=5432" );
if( C.is_open() )
{
std::cout << "Opened database successfully: " << C.dbname() << std::endl;
}
else
{
std::cout << "Can't open database" << std::endl;
return 1;
}
C.disconnect();
}
catch( const std::exception &e )
{
std::cerr << e.what() << std::endl;
return 1;
}
} |
|
Und dieses Build File:
|
Code: |
{
"cmd": ["g++", "-I/usr/include/pqxx", "${file}", "-o", "${file_path}/${file_base_name}", "-lpqxx", "-lpq"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++",
"variants":
[
{
"name": "Run",
"cmd": ["bash", "-c", "g++ '${file}' -o '${file_path}/${file_base_name}' -I'/usr/include/pqxx' -lpqxx -lpq && '${file_path}/${file_base_name}'"]
}
]
}
|
|
Kompilieren auch prima.
Jetzt moechte ich in dem zweiten Programm noch <regex> aus C++11 benutzen. Daher dann dieses Buildfile:
|
Code: |
{
"cmd": ["g++", "-std=c++0x", "-I/usr/include/pqxx", "${file}", "-o", "${file_path}/${file_base_name}", "-lpqxx", "-lpq"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++",
"variants":
[
{
"name": "Run",
"cmd": ["bash", "-c", "g++ -std=c++0x '${file}' -o '${file_path}/${file_base_name}' -I'/usr/include/pqxx' -lpqxx -lpq && '${file_path}/${file_base_name}'"]
}
]
}
|
|
Und das kompiliert dann nicht mehr. Fehler sieht so aus: Klick.
N Makefile hab ich ehrlich gesagt noch nie geschrieben. Bin mit Linux nicht so erfahren. Koennte ich das dann auch ueber das SublimeText Build System starten?
Komischerweise krieg ich's nichtmal mit
|
Code: |
g++ -std=c++0x Connect.cpp -o Connect -I/usr/include/pqxx -lpqxx -lpq |
|
im Terminal kompiliert.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von MCignaz am 26.06.2014 14:30]
|
|
|
|
|
|
Hab das gerade bei mir repliziert. Nimm das -I/usr/include/pqxx raus, dann kompiliert es. Du hast schon
|
Code: |
#include "pqxx/pqxx"
|
|
und pqxx ist in /usr/include/pqxx/. /usr/include/ sollte in deinem include-path liegen.
/e ach, und ich muss noch gegen libstdc++ linken, also g++ benutzen.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Krypt0n am 26.06.2014 14:27]
|
|
|
|
|
|
Ah okay, hätte ich nicht gefunden.
--
<thread> kann einem echt manchmal auf die Eier gehen.
|
|
|
|
|
|
|
| Zitat von Krypt0n
Hab das gerade bei mir repliziert. Nimm das -I/usr/include/pqxx raus, dann kompiliert es. Du hast schon
|
Code: |
#include "pqxx/pqxx"
|
|
und pqxx ist in /usr/include/pqxx/. /usr/include/ sollte in deinem include-path liegen.
/e ach, und ich muss noch gegen libstdc++ linken, also g++ benutzen.
| |
Ich liebe dich!
Kannst du mir was zu dem technischen Hintergrund erzaehlen, warum er sich da so zickig hat?
/Danke auch dir, Oli.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von MCignaz am 26.06.2014 14:35]
|
|
|
|
|
|
Habs!
|
Code: |
% ~ cpp -Wall -std=c++11 -P -M test.cpp > test2
% ~ cpp -Wall -std=c++11 -I/usr/include/pqxx -P -M test.cpp > test
% ~ cat test2 | sed "s/ \\\\//g" | sed "s/ /\n/g" | sort > test2
% ~ cat test | sed "s/ \\\\//g" | sed "s/ /\n/g" | sort > test
% ~ diff test test2
235d234
<
270a270
> /usr/include/c++/4.9.0/array
404a405
> /usr/include/c++/4.9.0/tuple
496d496
< /usr/include/pqxx/tuple
|
|
Ergo überlagert pqxx/tuple das c++/4.90/tuple.
Wobei meine shell-skills zu wünschen übrig lassen. Man kann das sicher auch ohne sed irgendwie mit tr oder so machen.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Krypt0n am 26.06.2014 15:06]
|
|
|
|
|
|
Aah! Crazy Shit. Darauf waer ich niemals gekommen.
|
|
|
|
|
|
|
Ich würd mich nicht mit dem mistigen Build-System einer Pseudo-IDE rumschlagen, benutz für C++ einfach make, CMake, qmake oder VS, je nach Umgebung.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Aber volle Kanne. Ich wurde auch schon danach gefragt, ob ich nicht ähnlich beknackte Forschung machen kann, weil es einen coolen Titel geben würde ... für die Karriere hätte ich wohl ja sagen sollen, hab es aber nicht gemacht, weil ich es zu doof fand irgendwas unsinniges mit tollem Titel zu machen, was niemals wirklche Anwendung oder auch nur Sinn haben wird.
Aber sowas kann die Uni halt toll als Pressemeldung raus hauen, Pressemeldungen steigern den Bekanntheitsgrad der Uni, steigert die Zitationen, steigert die Publikationen, gibt der Uni mehr Geld und das ist es worum es den meisten geht, besonders in der Verwaltung.
|
|
|
|
|
|
|
Mein Reden.
Ab in die Industrie. Zumindest wird man für das tägliche Aufstehen halbwegs vernünftig bezahlt.
Irgendwann werden sich die Sensationswissenschaftler selbst überlaufen haben.
| Hilfreich ist dabei die Lektüre eines klassischen Textes des Epidemiologen John Ioannidis von der Stanford University, leicht zu finden im Netz. Er lautet: "Warum die meisten veröffentlichten Forschungsergebnisse falsch sind." | |
Hat das jemand gefunden?
|
|
|
|
|
|
|
|
|
|
|
Stimmt!
|
|
|
|
|
|
|
Hallo, kennt sich zufällig jemand von euch mit Element-Boundry-Methode aus?
|
|
|
|
|
|
|
Definiere auskennen. Bzw. stelle deine Frage.
Vorlesung gehört ☑
Prüfung bestanden ☑
Ahnung ☒ Aber da ich das in ein paar Wochen eh einem Kommilitonen erklären darf kann ich mir das auch jetzt schon wieder angucken.
|
|
|
|
|
|
|
In dieser PDF wird beschrieben wie man das Torsionsflächenmoment eines beliebigen Querschnitts mit linearen Randelementen über ein Randintegral berechnen kann.
Leider fehlt mir das mathematische Verständnis für den letzten Schritt (Formel 3.68)
Wie Löse ich das Integral, wenn ich einen geschlossene Kurve aus linearen Elementen habe, ist meine Frage.
Fakeedit: Die genannte Quelle mit den Lösungen ist älter als ich und nicht mehr verfügbar.
|
|
|
|
|
|
|
This just in: Buchempfehlung für Atomphysik
Mitchel Weissbluth: Atoms and Molecules
Eines der wenigen mir bekannten Bücher dass Dinge wie "wie sich leicht zeigen lässt" oder "eine genaue Rechnug ergibt" spart. Der Kerl rechnet das durch, z.B. in Späßen wie der Lebensdauerverbreiterung, die sich aus ner Störungsrechnung ableiten lässt. Hat halt erst mal 200 Seiten mathematische Grundlagen. Me likes.
|
|
|
|
|
|
|
Es ist mal wieder Dumme-Fragen-Zeit. \o/
Wir benutzen auf Arbeit JAXB um Configs zu speichern/laden. Darin werden momentan Dateipfade als Strings abgelegt, was für die Portierbarkeit recht blöd ist. Am liebsten würden wir einfach die Path-Objekte marshallen/unmarshallen aber das geht anscheinend nicht. Gibt es irgendeine Möglichkeit da mit wenig Aufwand was zu machen? Oder muss ich von Hand die Strings umbasteln?
Um das mal zu verdeutlichen, hier ein Auszug aus dem Unit-Test,:
|
Code: |
Files.createDirectories(Paths.get("C:\\1234\\"));
File shpc = new File("C:\\1234\\test.shpc");
String expIn = "C:\\1234\\in\\in.shp";
String expOut = "C:\\1234\\out.shp";
Configuration sptc = new Configuration();
sptc.setIn(expIn);
sptc.setOut(expOut);
sptc.setAbsolutePaths(false);
List<String> content = Files.readAllLines(
Paths.get("C:\\1234\\test.shpc"), Charset.defaultCharset());
assertEquals("<inShape>in\\in.shp</inShape>", content.get(3).trim());
assertEquals("<outShape>out.shp</outShape>", content.get(4).trim());
|
|
|
|
|
|
|
|
|
Also, was heisst "geht nicht?". Was spricht dagegen mit xjc ein XML Schema für eure Pfadobjekte anzulegen? Dann müsstet ihr wahrscheinlich noch eine ausgeklügeltere Wrapperklasse für Path bauen (nicht den Pfad als String behandeln sondern die einzelnen Pfadteile sonst anlegen, und den Pfad im getter ganz bauen oder so) und das wäre geritzt, dann kann euch schemagen wahrscheinlich sogar auf Anhieb was passsendes basteln.
Sorry, mehr Input kann ich so aus dem Stegreif nicht geben, habe das ewig nicht mehr gemacht.
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von SwissBushIndian am 27.06.2014 20:21]
|
|
|
|
|
|
Ich hab hier gerade diesen Code:
|
Code: |
std::string str = "1;FC Bayern München;1;";
std::regex regex( "([0-9]+);([^;]+);([1-3]);$" );
std::smatch field;
if( regex_match(str, field, regex) )
{
// std::cout << "Matched: " << str << std::endl;
for(auto result : field)
{
std::cout << result << std::endl;
}
}
|
|
Die For-Schleife finde ich aeusserst elegant, allerdings wuerde ich gern beim zweiten Element anfangen auszugeben, als beim ersten. Geht das irgendwie so huebsch oder muss ich da dann irgendeine Iteratoren Kiste oeffnen?
|
|
|
|
|
|
|
Hm, mit dem Schnippsel da oben kann ich jetzt auch nicht viel anfangen.
Deshalb nur zwei Kommentare: Path baut dir den Pfad selber zusammen je nach Betriebssystem. Einfach die Strings der Pfad-Elemente hinter einander ketten.
| The following example creates /u/joe/logs/foo.log assuming your home directory is /u/joe, or C:\joe\logs\foo.log if you are on Windows.
Path p5 = Paths.get(System.getProperty("user.home"),"logs", "foo.log");
| |
von http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html
D. h., jetzt nur als eine Möglichkeit weil ich den Rest von dem Code da nicht kenne, du könntest die einzelnen Pfad-Strings in die Tonne werfen, daraus etwa eine Liste von Strings machen (die jaxb auch frisst), und Paths baut dir das völlig portierbar wieder zusammen.
|
|
|
|
|
|
|
| Zitat von MCignaz
Ich hab hier gerade diesen Code:
|
Code: |
std::string str = "1;FC Bayern München;1;";
std::regex regex( "([0-9]+);([^;]+);([1-3]);$" );
std::smatch field;
if( regex_match(str, field, regex) )
{
// std::cout << "Matched: " << str << std::endl;
for(auto result : field)
{
std::cout << result << std::endl;
}
}
|
|
Die For-Schleife finde ich aeusserst elegant, allerdings wuerde ich gern beim zweiten Element anfangen auszugeben, als beim ersten. Geht das irgendwie so huebsch oder muss ich da dann irgendeine Iteratoren Kiste oeffnen?
| | Ja, musst du, aber so schlimm ist das nicht.
|
Code: |
for (auto result = std::begin(field) + 1; result != std::end(field); ++result)
{
std::cout << *result << std::endl;
} |
|
|
|
|
|
|
|
|
Nagut, damit kann ich noch leben. Danke.
|
|
|
|
|
|
|
| Zitat von SwissBushIndian
Also, was heisst "geht nicht?". Was spricht dagegen mit xjc ein XML Schema für eure Pfadobjekte anzulegen? Dann müsstet ihr wahrscheinlich noch eine ausgeklügeltere Wrapperklasse für Path bauen (nicht den Pfad als String behandeln sondern die einzelnen Pfadteile sonst anlegen, und den Pfad im getter ganz bauen oder so) und das wäre geritzt, dann kann euch schemagen wahrscheinlich sogar auf Anhieb was passsendes basteln.
Sorry, mehr Input kann ich so aus dem Stegreif nicht geben, habe das ewig nicht mehr gemacht.
| |
Das ist genau der Ansatz, den ich mir auch überlegt hatte. Aber bevor ich das Rad neu erfinde...
|
|
|
|
|
|
|
| Zitat von Skgoa
| Zitat von SwissBushIndian
Also, was heisst "geht nicht?". Was spricht dagegen mit xjc ein XML Schema für eure Pfadobjekte anzulegen? Dann müsstet ihr wahrscheinlich noch eine ausgeklügeltere Wrapperklasse für Path bauen (nicht den Pfad als String behandeln sondern die einzelnen Pfadteile sonst anlegen, und den Pfad im getter ganz bauen oder so) und das wäre geritzt, dann kann euch schemagen wahrscheinlich sogar auf Anhieb was passsendes basteln.
Sorry, mehr Input kann ich so aus dem Stegreif nicht geben, habe das ewig nicht mehr gemacht.
| |
Das ist genau der Ansatz, den ich mir auch überlegt hatte. Aber bevor ich das Rad neu erfinde...
| |
Guckst du dir das von smith, der kann das garantiert bessert.
¤: Was wohl das gleiche ist
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von SwissBushIndian am 27.06.2014 23:55]
|
|
|
|
|
|
Ja, der smith der kann halt nicht lesen!
Ich schieb es mal auf das Feierabendbier, Prost.
|
|
|
|
|
|
|
Ich meinte das Ernst, du kannst das garantiert besser
|
|
|
|
|
|
Thema: pOT-lnformatik, Mathematik, Physik XVI ( Ship painting activities ) |