Fejlesztés

Ugyanaz a webservice külön szerveren több példányban

Fórumok

Erre mi a kulturált megoldás .NET alatt?

- Adott több (jelen esetben 2) szerver ugyanazzal a webservice-al.
- További nehezítés, hogy mindkét szerveren a service kétszer van felhúzva (1 éles 1 teszt)
- Maga a webszolgáltatás tökugyanaz mind a 4 esetben.
- Service ASP.NET-ezik.
- Kliens egy mezei desktop .NET app.

Az alapvető probléma az, hogy ha felveszem a service reference-t, akkor ugye fel kellene venni 4x. Ha más endpoint address-t adok meg a Client példányosításakor, akkor meg azon megy a hiszti, hogy nem tetszik neki a SOAPAction.

Mi erre a kultúrált megoldás?

Botorkálás Bison-ban

Fórumok

Nem igazán vagyok tisztában a Bison lelki világával, egy kis helyrezökkentés kellene.
Nem, ez nem házi feladat, az én koromban már nincs efféle, csak hobbyból ismerkedek a dologgal.
Amit nem értek: ha a *.y file-ban egy vezérlési strukturát így deklarálok:
WHILE '(' expr ')' stmt ENDWHILE { //ide írom c-ben a vezérlési szerkezet kezelést: WHILE-t stackelni }
akkor rákényszerít ugyan az ENDWHILE használatára, de hogyan tudok az ENDWHILE-hoz c kódot rendelni, hogy ellenőrizzem, a vezérlési szerkezetben nincs-e átlapolás?

Adatbázis alkalmazás fejlesztés

Fórumok

Sziasztok!
Szeretnék magamnak egy adatbázis alkalmazást fejleszteni, lényegében egy redundanciát tartalmazó, vagy másképpen nem normalizált excel táblát váltanék ki vele.
Mindenféle előfeltétel nélkül ti mit ajánlanátok. Elkezdtem már python, perl, java, C++-al, illetve Qt-vel is ismerkedni, de mindig abbamaradt, mert változókkal, adattípusokkal, vezérlési szerkezetekkel ugyan már megismerkedtem, de nem jutottam el oda, hogyan is tudnám ezt egy ilyen alkalmazásban használni.
MS Lightswich vagy mi a neve a MS erre a célra szolgáló alkalmazásának, de erre sem találtam jó könyvet, csak egy devPortal-os videót, amin fényezik a rendszert, azzal sem lettem előrébb.
Szerk: még annyit, beszereztem pár könyvet, Hogyan tanuljuk meg a java, C++, C#, PHP használatát 24 óra alatt, Angster Erzsébet Java könyvét, valami Phythont tanulok vagy mi a címe, belekezdtem, de nem látom, hogy hogyan jutok el a végső célomhoz, mert ezt nagyon nagyolva tárgyalják.
Java lenne az a nyelv, amit preferálnék, de ehhez sem találtam olyat, hogyan tudnék szépen grafikus felületen adatbázist használó alkalmazást fejleszteni.

Github keresés

Fórumok

Üdv

Jobb ötlet híján ide írom a kérdést.
Néhány napig működött a githubon a szelektív keresés de egyszer csak megszűnt: a keresett szöveg pushed:[2012-11-01 TO NOW] semmilyen találatot nem ad rá. Ez itten a szegényes leírása a részletes keresésnek https://github.com/search/advanced.
Ha valaki tudna sedíteni, hogy ne kelljen végignéznem 3000 évekkel ezelőtt abbahagyott projektet is, annak nagyon örülnék.
Köszi

DoxyGen out of memory

Fórumok

Szerbusztok,

abban szeretném a segítségeteket kérni, hogy van egy nagyon nagy (7-9 GB) forráskódom C++-ban, és ehhez szeretném doxygen-nel elkészíteni a dokumentációt. A probléma, hogy mindig elszáll több órás munka után valamilyen out of memory-val.
Az egyik ilyen hibaüzenet ez volt:
out of dynamic memory in doctokenizerYY_create_buffer()

A tegnap elindított próbálkozásom eredméyne pedig ez volt:
In file ..\qtools\qgarray.cpp, line 229: Out of memory

Ez számomra értelmetlenebbnek tűnik, de hátha találkozott már valaki valamelyik hibával.

A kérdés az lenne, hogy ezt hogy lehet orvosolni, vagy van-e valami mód rá, hogy ne foglaljon le ennyi memóriát(1.2 G-át már láttam futás közben, és akkor még nem szállt el, de feltételezem, hoyg ez csak nőtt...)

Üdv: Norbi

fejlesztés pénzért

Fórumok

Hello!

Közel a karácsony mindenkinek így úgy gondolom nem csak engem érint.
Egy kis plusz bevétel nyomában kutatok, ebben szeretném a ti segítségetek is kérni.
Ha tudtok olyan oldalt, esetleg projektet, ahol fejlesztésért lehet keresni egy kis mellékest, légyszíves osszátok meg.

Üdv:
Márk

bison (yacc)

Fórumok

Sziasztok,
tobb bison (vagy yacc) leirasrol visszapattantam, mert nem talaltam _mukodo_ mintapeldat, mindig van valamilyen szintaktikai hiba, pedig copy-paste probalom a mintapeldakat. Most eppen ez az aktualis:
http://pastebin.com/6FSvQT2b
Ez meg az eredmenye:
steve@HP:/tmp$ yacc -dv parser1.y
parser1.y:7.7: invalid character: `\342'
parser1.y:7.8: invalid character: `\200'
parser1.y:7.9: invalid character: `\231'
parser1.y:7.10: invalid character: `-'
parser1.y:7.11: invalid character: `\342'
parser1.y:7.12: invalid character: `\200'
parser1.y:7.13: invalid character: `\231'
parser1.y:7.15: invalid character: `\342'
parser1.y:7.16: invalid character: `\200'
parser1.y:7.17: invalid character: `\231'
parser1.y:7.18: invalid character: `+'
parser1.y:7.19: invalid character: `\342'
parser1.y:7.20: invalid character: `\200'
parser1.y:7.21: invalid character: `\231'
parser1.y:8.1-5: syntax error, unexpected %left, expecting string or char or identifier or type

Lehet, hogy ez valami trivialis dolog, de mar az otodik bevezetest olvasom a temaban es meg nem talaltam lefordithato mintapeldat. Itt mi a baj?

[MEGOLDVA]git post hook

Fórumok

Sziasztok!

Rakat leírást átnéztem, mind ugyanúgy mondja, nálam mégsem akar működni. Tuti, valami apróságot szúrok el.
Van egy git repo egy szerveren. Ezt a repot clone-oztam a fejlesztői gépre. A cél az volna, hogy ha pusholok, akkor egy post commit hook a www mappa alatti working copy-t is frissítse a szerveren.

A post-receive így néz ki az egyik leírás alapján:


#!/bin/bash

WORKDIR="/var/www/$SITENAME/content"
export GIT_DIR=$WORKDIR/.git
pushd $WORKDIR > /dev/null
git pull
popd > /dev/null

Csináltam egy tesztet, amiben letesz egy üres fájlt egy számára írható mappába, s a gond az, hogy le sem fut a post-receive push után.

Van valakinek ötlete?
Előre is köszönöm a segítséget!

line-by-line time based profiler

Fórumok

Olyan profiler-t (azaz olyan programot, ami statisztikát készít egy másik programról) keresek elsősorban Linux-ra, amely a forráskódban soronként jelzi, hogy melyik utasítás mennyi ideig tartott. Van ugyan egy-két hasznosnak tűnő profiler, de egyik sem képes kellően részletes kimutatásra. (tudtommal)
Például itt van a

gcov

: kiírja a teljes forráskódot és a sorok mellé odaírja, hogy mennyiszer hajtotta végre a program.


~/tmp $ gcc progi.c -o progi -fprofile-arcs -ftest-coverage
~/tmp $ ./progi
~/tmp $ gcov progi.c
File 'progi.c'
Lines executed:100.00% of 12
progi.c:creating 'progi.c.gcov'

~/tmp $ cat progi.c.gcov
        -:    0:Source:progi.c
        -:    0:Graph:progi.gcno
        -:    0:Data:progi.gcda
        -:    0:Runs:1
        -:    0:Programs:1
        -:    1:#include <stdio.h>
        -:    2:#include <string.h>
        -:    3:
        -:    4:void
   999999:    5:fuggveny( void )
        -:    6:{
        -:    7:    static unsigned long int
        -:    8:        i = 0;
        -:    9:
        -:   10:    char
   999999:   11:        src[ 10000 ] = { 255 },
   999999:   12:        dst[ 10000 ] = { 0 };
        -:   13:
   999999:   14:    memcpy( dst, src, 1000 );
   999999:   15:    memcpy( dst, src, 10   );
        -:   16:
   999999:   17:    i = (986 % 32) << (i / 1000);
        -:   18:
   999999:   19:    return;
        -:   20:}
        -:   21:
        -:   22:int
        1:   23:main( void )
        -:   24:{
        -:   25:    long int
        1:   26:        i = 999999;
        -:   27:
  1000001:   28:    while( --i >= 0 )
        -:   29:    {
   999999:   30:        fuggveny();
        -:   31:    }
        -:   32:
        1:   33:    return( 0 );
        -:   34:}

Nem rossz, csak az a baj, hogy a végrehajtás mennyiségét ki lehet számolni, de az ideje nem olyan egyértelmű.
Emellett itt van a

gprof

: kiírja a függvények végrehajtásának idejét.


~/tmp $ gcc progi.c -o progi -pg
~/tmp $ time ./progi

real    0m2.186s
user    0m2.184s
sys     0m0.000s
~/tmp $ gprof -bp progi
Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total
 time   seconds   seconds    calls  ns/call  ns/call  name
 95.65      0.22     0.22   999999   220.00   220.00  fuggveny
  4.35      0.23     0.01                             main

Egy fokkal talán hasznosabb (lenne, ha érteném az összefüggést a

time

és a

gprof

idejei között), de egy függvényen belül a különböző utasítások különböző időt vehetnek igénybe, így nem mindig egyértelmű, hogy mitől lassú a függvény.

Végsősoron ennek a kettőnek az egyesülése tetszene: soronként írja ki az adott sor, vagy legalább egy blokk futtatásának idejét. Létezik-e ilyen, vagy ez a kettő esetleg képes rá, csak én nem tudom hogyan?

Megoldás

Hogy megnézzük, melyik függvény használja a legtöbb időt:


~/tmp $ gcc progi.c -o progi
~/tmp $ perf record -gf ./progi
[ perf record: Woken up 11 times to write data ]
[ perf record: Captured and wrote 1.528 MB perf.data (~66755 samples) ]
~/tmp $ perf report -d ./progi
# dso: ./progi
# Samples: 2380
#
# Overhead      Command  Symbol
# ........  ...........  ......
#
    99.08%        progi  [.] fuggveny
                |
                |--99.24%-- main
                |          __libc_start_main
                |          0x8048351
                |
                 --0.76%-- __libc_start_main
                           0x8048351

     0.71%        progi  [.] main

     0.21%        progi  [.] 0x00000000000320

#
# (For a higher level overview, try: perf report --sort comm,dso)
#

Hogy megtudjuk a függvény részleteit:


~/tmp $ gcc progi.c -o progi -ggdb
~/tmp $ perf record -gf ./progi
[ perf record: Woken up 11 times to write data ]
[ perf record: Captured and wrote 1.546 MB perf.data (~67553 samples) ]
~/tmp $ perf annotate fuggveny
------------------------------------------------
 Percent |      Source code & Disassembly of progi
------------------------------------------------
         :
         :
         :
         :      Disassembly of section .text:
         :
         :      080483e4 <fuggveny>:
         :      #include <stdio.h>
         :      #include <string.h>
         :
         :      void
         :      fuggveny( void )
         :      {
    0.12 :       80483e4:       55                      push   %ebp
    0.00 :       80483e5:       89 e5                   mov    %esp,%ebp
    0.00 :       80483e7:       57                      push   %edi
    0.12 :       80483e8:       56                      push   %esi
    0.16 :       80483e9:       53                      push   %ebx
    0.12 :       80483ea:       81 ec 4c 4e 00 00       sub    $0x4e4c,%esp
         :          static unsigned long int
         :              i = 0;
         :
         :          char
         :              src[ 10000 ] = { 255 },
    0.00 :       80483f0:       8d 85 d8 d8 ff ff       lea    -0x2728(%ebp),%eax
    0.00 :       80483f6:       ba 10 27 00 00          mov    $0x2710,%edx
    0.16 :       80483fb:       89 54 24 08             mov    %edx,0x8(%esp)
    0.00 :       80483ff:       c7 44 24 04 00 00 00    movl   $0x0,0x4(%esp)
    0.00 :       8048406:       00
    0.08 :       8048407:       89 04 24                mov    %eax,(%esp)
    0.20 :       804840a:       e8 11 ff ff ff          call   8048320 <memset@plt>
    0.67 :       804840f:       c6 85 d8 d8 ff ff ff    movb   $0xff,-0x2728(%ebp)
...

Bár jobb lenne, ha az időfelhasználást százalék helyett a valódi értékével írná ki - mert ha a progi mondjuk kibővül egy újabb függvénnyel, akkor arányában ez a függvény kevesebb időt vesz igénybe, de ugyanannyi másodpercig tart, mint a program módosítása előtt - de így is nagyon hasznos információkkal szolgál.