Zaloguj się, aby obserwować  
UthersonL

Programowanie - pytania, problemy, przykłady programów

1812 postów w tym temacie

Dnia 26.12.2013 o 23:32, rob006 napisał:

Przez wieloprogramowość rozumiesz "wiele różnych platform Microsoftu"?


Wolałbym też jakieś wsparcie dla Linuxa, przynajmniej takie żeby obyło się bez pisania całej aplikacji od zera przy przenoszeniu.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Mono sobie radzi z .netem bez problemu.

Ja korzystam z cmake pod Windows i Linux. Jeżeli dobrze dobierzesz biblioteki to będzie zero problemów.
Cmake jest fajny oid Windowsem np pisze w visualu a pod Linux em albo oo prostu w jakimś qt lub vimie u zero problemów z kompilacja.

Ja zawsze pisze kod żeby działał tu i tu to nigdy nie miałem problemu. Najwyżej że pisałem stricte pod Windowsa np DirectX 11

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 26.12.2013 o 23:40, ziptofaf napisał:

Wolałbym też jakieś wsparcie dla Linuxa, przynajmniej takie żeby obyło się bez pisania
całej aplikacji od zera przy przenoszeniu.


To C# i .NET to nie jest odpowiednia droga - nawet jeśli ma jakieś wsparcie na Linuksie, to na zasadzie "jakoś działa".

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Pomyślałem sobie nad zrobieniem swojego własnego słownika. Mam już pomysł, tzn. zapiszę w 2 plikach słówka po polsku i po ang. A następnie będę sprawdzać słowo z jednego i szukać odpowiednika w drugim pliku, tym samym słowom będą odpowiadać te same cyfry. Mam to robić na klasie string? Słyszałem o boost, ale nie ma jakiegoś ''kumatego'' podręcznika, a dokumentacja na oficjalnej wydaje mi się chaotyczna. Nie umiem tego ogarnąć, wolę formę książki(czy tam jest, tylko ja nie widzę?).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

/.../

Eeee, po co ci boost do tego?

Zwykłe:
#include <map>

Kluczem będzie int, wartością string. Tu masz gotowy prosty przykład, przeanalizuj sobie czy ci wystarcza do szczęścia.

#include <iostream>
#include <map>

using namespace std;

int main()
{
map<int, string> slownik_eng;
map<int, string> slownik_pl;
slownik_pl[1]="kot";
slownik_eng[1]="cat";

cout << slownik_pl[1] << " = " << slownik_eng[1] << endl;

return 0;
}


Z kolei na samej stronie boosta nie ma "książki", jest tylko oficjalna dokumentacja. Zresztą znaczna część biblioteki już weszła do standardu C++11 i niedługo nawet nie będziesz musiał jej ściągać by móc korzystać z większości z jej rozwiązań np. już teraz możesz użyć np. takich instrukcji:

template<typename... Values> class hiper_container;

(to się skompiluje na GCC w wersji od 4.7.2+ bodajże więc jeśli masz stary kompilator to może nie działać)
Taki szablon pozwala na stworzenie klasy hiper_container przyjmującej DOWOLNĄ liczbę DOWOLNEGO typu argumentów (ba, argumentem może być nawet zupełnie inna klasa). W Booście nazywa się toto tuple.
Więc jeśli szukasz podręcznika do nauki Boosta to w sumie wystarczy ci taki który dość dokładnie omawia C++11. No, poza tymi związanymi z wielowątkowością i Asio - C++11 ma wsparcie dla wątków (i to w bardzo dużym stopniu identyczne z tym z Boosta) ale jest to po prostu BARDZO obszerne zagadnienie i będziesz potrzebować grubego podręcznika bądź uczestnictwa w jakimś projekcie który tego używa żeby zrozumieć jak to się je, inaczej rozbijesz się o zmienne atomowe, muteksy, zakleszczenia... pisanie aplikacji wielowątkowej to trudna sprawa.

Z kolei Asio trudne nie jest ale zajmuje się aplikacjami sieciowymi a tutaj wchodzimy w takie terminy jak bindowanie, komunikacja synchroniczna i asynchroniczna, nagłówki pakietów, warstwy... sama biblioteka jest stosunkowo prosta ale musisz mieć sporą wiedzę z tej dziedziny żeby w ogóle wiedzieć jak ją wykorzystać.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Hej, pytanie moze nie dotyczące bezpośrednio programowania, ale mocno z nim związane: czy macie jakieś doświadczenie z VPS''ami do hostowania aplikacji webowych w javie / ruby? Czy polecacie jakieś serwerownie (lub odradzacie)? Za każdą wskazówkę, link, będę wdzięczny :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 02.01.2014 o 11:40, eNcore napisał:

Hej, pytanie moze nie dotyczące bezpośrednio programowania, ale mocno z nim związane:
czy macie jakieś doświadczenie z VPS''ami do hostowania aplikacji webowych w javie /
ruby? Czy polecacie jakieś serwerownie (lub odradzacie)? Za każdą wskazówkę, link, będę
wdzięczny :)


No to tak - o ile naprawdę nie płaczesz z biedy to daruj sobie VPS''y.
Za to zainteresuj się następującymi miejscami:
http://www.online.net/en/dedicated-server/dedibox-scg2 (płatności tylko przez paypal)
http://www.kimsufi.com (ten będzie u nas dostępny za kilka dni bo zmieniali ofertę niedawno)
Są to po prostu tanie serwery dedykowane za ~40-50 zł miesięcznie. Mają procesory z kategorii dosyć powolnych ale:
a) VPS-y mają tzw. Virtual Core. Co w praktyce może oznaczać cokolwiek - np. fizycznym procesorem jest 16 rdzeniowy Opteron, a ty dostajesz np. pół wątku z niego (nawet nie rdzenia)...
b) Bardzo ograniczony swap i RAM. A akurat Ruby to potrafi żreć zasobów komputera.
c) Ogólnie nie masz też żadnych ''gwarantowanych'' zasobów. W praktyce nawet najgorszy dedyk z Celeronem na pokładzie się lepiej sprawdza.
d) Malutkie dyski twarde i niskie przepustowości - ja osobiście używam małego dedyka głównie do przechowywania backupów danych itp więc te 150 mbps i 500GB HDD mi się przydaje :P

Jeśli już koniecznie VPS bo taniej i masz minimalistyczne wymagania to zainteresuj się:
http://iniz.com/vps.html
Mają całkiem niezły wybór i są tani, na jakość nie narzekałem nadmiernie.

Tak czy siak jednak:
a) Radzę jako serwer WWW stawiać Nginxa a nie Apache bo zadusisz dowolnego VPS-a BARDZO szybko.
b) Z kolei samo Ruby jest... fajne. Na pewno o wiele lepsze niż PHP, nie jest po prostu losowym zbiorem dziwacznych funkcji z których i tak połowa nie działa. Wydajnościowo standardowo skonfigurowane Ruby on Rails odpowiada mniej więcej aplikacjom pisanym w Symphony 2 + PHP-FM (czyste PHP jest z 2x wolniejsze).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 04.01.2014 o 12:22, ziptofaf napisał:

PHP-FM (czyste PHP jest z 2x wolniejsze).


Akurat to jest duże nadużycie - PHP-FPM nie przyspiesza samego PHP, niweluje tylko opóźnienia związane z jego uruchomieniem, a to jest raczej działka samego serwera www i jego konfiguracji, nie PHP (przykładowo uruchomienie PHP przez mod_php w Apache jest jeszcze szybsze, ale ma swoje inne wady, które mogą totalnie zniwelować korzyści). To co daje kopa samemu PHP, to jest akcelerator, szczególnie przydatny przy korzystaniu z takich ociężałych frameworków jak Symfony :D
Dodatkowo:
- Ociężałość Apache jest bardzo przereklamowana, tak naprawdę widać ją dopiero przy naprawdę ogromnym ruchu (głównie statycznych plików), a do hostingu takiej aplikacji nie szuka się taniego VPSa,
- które funkcje w PHP nie działają? :O

Co do Ruby, to tylko korzystam z aplikacji w nim napisanych i to co mogę powiedzieć na jego temat, to że:
- żre RAMu niesamowicie dużo (w porównaniu do PHP);
- inicjalizacja przy obsłudze przez passengera trwa strasznie długo (nawet do kilku sekund), później już działa normalnie.
Dlatego dużo zależy od tego, czy na tym serwerze mają być uruchamiane aplikacje produkcyjnie, czy tylko jako wersje testowe/developerskie. Sam jako serwer developerski wykorzystuję http://vipserv.org/ (mój ref: http://vipserv.org/p/2854127637 ), z ruby hostuję tam tylko aplikację do zarządzania projektem i działa całkiem znośnie (passanger jest tam ubijany po jakimś czasie bezczynności, co przy małym ruchu zdarza się dość często). Javy niestety tam nie uświadczysz, ale ogólnie polecam - działa szybko, multum opcji, choć na uruchamianie produkcyjnie aplikacji o dużym ruchu to raczej trochę drogo (uwzględniając limity) - uniwersalność ma tez swoje wadu. ;]

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

/.../

Dnia 04.01.2014 o 13:32, rob006 napisał:

To co daje kopa samemu
PHP, to jest akcelerator, szczególnie przydatny przy korzystaniu z takich ociężałych
frameworków jak Symfony :D

A to fakt, mój błąd.

Dnia 04.01.2014 o 13:32, rob006 napisał:

Dodatkowo:
- Ociężałość Apache jest bardzo przereklamowana, tak naprawdę widać ją dopiero przy naprawdę
ogromnym ruchu (głównie statycznych plików), a do hostingu takiej aplikacji nie szuka
się taniego VPSa,
- które funkcje w PHP nie działają? :O

Z perspektywy realnej aplikacji:
a)Zapytania do MySQL - w zasadzie trzeba je przekierowywać przez PDO. W innym przypadku jesteśmy narażeni na SQL Injection. W Ruby cała zabawa to w zasadzie "select * from users where username = ?, post_username" i gotowe.
b) $test = ''A''
$zbior = (
( $test==''B'' ) ? ''drzewo'' :
( $test==''C'') ? ''sadzonka'' :
( $test==''A'') ? ''poprawny_wynik'' :
( $test==''D'') ? ''costam'' );
echo $zbior;

Wynikiem funkcji echo nie będzie poprawny_wynik jak można by się spodziewać a ''costam''.

d) Bloki catch i try - czasem działają, czasem nie. Od czego to zależy? Błędy krytyczne NIE MOGĄ być wyłapane w żaden sposób, po prostu program wywali śliczny fatal error. Sporo też zależy od tego czy używamy funkcji czy obiektów.
e) oficjalna "łatka" jednego z bugów (dość stara, to prawda)...
http://use.perl.org/use.perl.org/_Aristotle/journal/33448.html

Ja to może jestem dziwny ale jak można sprawdzać czy INT JEST WIĘKSZY OD INT_MAX? Jak widzę takie programowanie w samych trzewiach PHP to ja się boję myśleć co jeszcze może nie działać ;P

f) http://phpsadness.com/ - całe strony poświęcone temu jak dziwne rzeczy wyprawia PHP.

Od strony developera o wiele bardziej lubię Ruby, niektóre rzeczy które w PHP robi się w 50 linijek Ruby robi w 3-4. Nie mówię że PHP to jest język zły ale niejako stał się ofiarą swojej popularności - Ruby on Rails narzuci ci konkretne nazewnictwo klas, musisz ładować sobie poszczególne moduły a nie wszystko naraz, składnia też jest bardziej przystępna (sanitize_strings, mysql_real_escape i 100 innych dziwactw PHP). W PHP da się dobrze programować tylko że potrzebne jest w tym więcej planowania i świadomej konsekwencji ze strony programisty. Jest to język rzeczywiście najprostszy w użyciu ale jednocześnie przez to najtrudniejszy w debugowaniu i napisaniu dobrej, bezpiecznej aplikacji sieciowej.

Dnia 04.01.2014 o 13:32, rob006 napisał:

Co do Ruby, to tylko korzystam z aplikacji w nim napisanych i to co mogę powiedzieć na
jego temat, to że:
- żre RAMu niesamowicie dużo (w porównaniu do PHP);

A temu nie zaprzeczę :P

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 04.01.2014 o 15:34, ziptofaf napisał:

a)Zapytania do MySQL - w zasadzie trzeba je przekierowywać przez PDO. W innym przypadku
jesteśmy narażeni na SQL Injection. W Ruby cała zabawa to w zasadzie "select * from users
where username = ?, post_username" i gotowe.

1. Są funkcje zabezpieczające zmienne;
2. Co jest złego w użyciu PDO, albo jakiegoś mechanizmu z frameworka? Nawet napisanie podobnego mechanizmu samodzielnie to 10 minut roboty...

Dnia 04.01.2014 o 15:34, ziptofaf napisał:

b) $test = ''A''
$zbior = (
( $test==''B'' ) ? ''drzewo'' :
( $test==''C'') ? ''sadzonka'' :
( $test==''A'') ? ''poprawny_wynik'' :
( $test==''D'') ? ''costam'' );
echo $zbior;

Wynikiem funkcji echo nie będzie poprawny_wynik jak można by się spodziewać a ''costam''.

To, że nie wiesz jak działają konkretne konstrukcje języka, nie znaczy jeszcze, że one nie działają. Poza tym jeśli tworzysz takie kwiatki bez użycia nawiasów, to krzyżyk na drogę. ;]

Dnia 04.01.2014 o 15:34, ziptofaf napisał:

d) Bloki catch i try - czasem działają, czasem nie. Od czego to zależy? Błędy krytyczne
NIE MOGĄ być wyłapane w żaden sposób, po prostu program wywali śliczny fatal error. Sporo
też zależy od tego czy używamy funkcji czy obiektów.

To nie jest prawda - fatal errors też można obsługiwać. Zresztą to są błędy najcięższego kalibru i ich źródłem są zwykle literówki, jeśli pojawiają ci się niespodziewanie w działającej aplikacji, to coś z twoim kodzeniem jest nie tak.
Poza tym: konkrety.

Dnia 04.01.2014 o 15:34, ziptofaf napisał:

f) http://phpsadness.com/ - całe strony poświęcone temu jak dziwne rzeczy wyprawia PHP.

Sorry, nawet nie czytam. Widziałem już 2 takie zestawienia i jedno było napisane przez osobę, która PHP praktycznie nie znała, a druga miała pretensje, że PHP to nie C++. :D Nagonka na ten język już mnie znudziła, sam zdaję sobie sprawę z jego ograniczeń i upierdliwości, ale takie zestawienia to zwykle lanie wody i szukanie dziury w cały typu " w języku XYZ jest inaczej niż w PHP - skąd mam to wiedzieć, przecież nie wiem co to dokumentacja?!"

Dnia 04.01.2014 o 15:34, ziptofaf napisał:

Od strony developera o wiele bardziej lubię Ruby, niektóre rzeczy które w PHP robi się
w 50 linijek Ruby robi w 3-4. Nie mówię że PHP to jest język zły ale niejako stał się
ofiarą swojej popularności - Ruby on Rails narzuci ci konkretne nazewnictwo klas, musisz
ładować sobie poszczególne moduły a nie wszystko naraz, składnia też jest bardziej przystępna
(sanitize_strings, mysql_real_escape i 100 innych dziwactw PHP). W PHP da się dobrze
programować tylko że potrzebne jest w tym więcej planowania i świadomej konsekwencji
ze strony programisty. Jest to język rzeczywiście najprostszy w użyciu ale jednocześnie
przez to najtrudniejszy w debugowaniu i napisaniu dobrej, bezpiecznej aplikacji sieciowej.

Myślę, że podstawowym błędem w ocenie tego języka jest to, że porównujesz pisanie dużych aplikacji w czystym PHP do tworzenia tej samej aplikacji w RoR. Nikt rozsądny tak nie robi, PHP posiada masę frameworków różnego kalibru, można je dostosować do siebie i wielkości projektu. To że nie potrafisz wykorzystać narzędzia, nie znaczy jeszcze, że nie działa albo jest złe.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zaczynam się poważnie zastanawiać, czy ten mój komputer w ogóle mnie lubi. Chciałem wgrać do Dev bibliotekę SDL 2.0 wchodzę w opcje kompilatora, ładnie załączam katalogi i nic, dalej mi wyskakuje, że nie ma takich funkcji...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bawię się ostatnio w CUDA i mam problem w kopiowaniu danych na GPU.
Przesyłam tablicę unsigned charów przy użyciu cudaMemcpyToSymbol. Dane są kopiowane do statycznej tablicy. Czasem jednak zdarzy się, że nic nie kopiuje.
Wie, ktoś z czym może być to związane?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

O wadach projektowych PHP można by sporo mówić xD.
http://www.codinghorror.com/blog/2012/06/the-php-singularity.html
http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/
Zaznaczę słowa projektowych. Tylko, to moim zdaniem nie przeszkadza no C++, też ma swoje wady jak np zaszłości z C++ np w składni. W każdym języku można się przyczepić do tego no, bo każdy język ma swoje tam jakieś rzeczy.
Wiadomo, że programista C++ będzie miał łatwiej z przejściem z C++ na PHP (zarządzanie pamięcią etc) No, ale już nie porównujmy. Jak język ma wady, to powstaje inny język bez tych wad C>C++>Java>C#(może mieć inne xD)
Taka jest kolei rzeczy na razie PHP nie ma jakiejś groźniej konkurencji.

Moim zdaniem JS ma gorzej niż PHP. Jest powszechnie używany, ale mnogość translatorów, żeby nie pisać w czystym JS jest ogromna w liczam, to biblioteki jak JQuery.
Aktualnie, to można pisać bardzo ładny kod np w C# i wygenerować takiej samej postaci Javascripta.
Albo użyć TypeScripta, który jest zgodny z nowym standartem ECMAScript i jest nadzbiorem JS, żeby pisać ładniej. Ogólnie polecam TypeScripta ma klasy, a zanim się pojawią klasy w JS, to troszkę jeszcze minie.

Co do JS, to ja się nauczyłem bardzo ładnie pisać w tym języku zajęło mi to trochę, bo język skłania do robienia złych rzeczy. No, ale da się.
Dlatego też nie pochwalam nagonki na PHP, ale nie zaprzeczam, że PHP kiedyś straci na znaczeniu ze względu(Ale pewnie będę wtedy bardzo stary xD)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Będę mieć problemy z ogarnięciem Symfonii bez znajomości jakiegokolwiek języku programowania? Nigdy nic nie pisałem, a chciałbym wreszcie zacząć. Najbardziej ciągnie mnie właśnie do C++.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Symfonia to bardzo obszerna książka. Jeśli zaczniesz od początku to nie powinno być problemów chyba że okaże się że programowanie nie jest dla ciebie. ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 09.01.2014 o 16:38, Ventil napisał:

Będę mieć problemy z ogarnięciem Symfonii bez znajomości jakiegokolwiek języku programowania?
Nigdy nic nie pisałem, a chciałbym wreszcie zacząć. Najbardziej ciągnie mnie właśnie
do C++.


Powiem tak - Symfonia jest jednym z najlepszych podręczników do nauki C++ i jednym z nielicznych które rzeczywiście nadają się do nauki tego języka. Dużo przykładów, wyjaśnienie w zasadzie każdego zagadnienia (a jak czegoś nie ma w Symfonii to będzie w Pasji) ale... cóż, to jednak C++, język zdecydowanie niezaliczający się do najprostszych w którym aby zobaczyć efekty swojej pracy potrzeba często naprawdę wiele linii kodu, w którym musisz pamiętać o usuwaniu śmieci, bardzo szybko okazuje się że jeśli chcesz coś zrobić to musisz znaleźć w internecie bibliotekę pod to bo itd.
Uczciwie przyznam - zaczynanie nauki od C++ jest wykonalne ale to niekoniecznie optymalny wybór. Początkującym to bym raczej polecił Pythona bądź Ruby - prostsza składnia, w tej samej ilości linii kodu możesz też napisać bardziej rozbudowaną aplikację. Zaletą tych języków jest ogólna prostota, nawet ktoś kto nie umie programować jest w stanie je szybko zrozumieć w pewnym stopniu.
Jeśli zaś koniecznie chcesz uczyć się języka mainstreamowego ogólnego przeznaczenia to w tej chwili na start zaleciłbym raczej Javę albo C# aniżeli C++. Od razu uczysz się najnowszych standardów programowania które w C++ co prawda istnieją ale są bardziej rozszerzeniem języka aniżeli jego "częścią główną", o wiele łatwiej też robić aplikacje które rzeczywiście się do czegoś nadają (a to łączenie się ze stronami WWW, a to jakieś programy z grafiką itp) aniżeli paskudne programy tekstowe.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wielkie dzięki. Na taką odpowiedź czekałem :)

W takim razie zastanowię się nad Pythonem albo Javą. Czytałem, że C# przyzwyczaja człowieka do złych nawyków, które nie sprawdzają się w C++. To prawda?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 10.01.2014 o 20:07, Ventil napisał:

Wielkie dzięki. Na taką odpowiedź czekałem :)

W takim razie zastanowię się nad Pythonem albo Javą.


Python jest fajnym wyborem według mnie - uczy dobrych praktyk (wcięcia! :D) i szybko widać efekty - jeśli dobrze pamiętam to klienta poczty można w kilku linijkach napisać. No i jest stosunkowo uniwersalny - od skryptów usprawniających codzienne zadania w systemie, po aplikacje webowe :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 09.01.2014 o 16:38, Ventil napisał:

Będę mieć problemy z ogarnięciem Symfonii bez znajomości jakiegokolwiek języku programowania?
Nigdy nic nie pisałem, a chciałbym wreszcie zacząć. Najbardziej ciągnie mnie właśnie
do C++.


Po co chcesz sie nauczyc programowac i czego pisanie ew. by Cie interesowalo?

Tak jak wyzej tez polecilbym Pythona, duzo ma juz wbudowane w standardowej bibliotece, (zazwyczaj) nie wymaga tez przejmowania sie niskopoziomowymi szczegolami.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Utwórz konto lub zaloguj się, aby skomentować

Musisz być użytkownikiem, aby dodać komentarz

Utwórz konto

Zarejestruj nowe konto na forum. To jest łatwe!


Zarejestruj nowe konto

Zaloguj się

Masz już konto? Zaloguj się.


Zaloguj się
Zaloguj się, aby obserwować