• Как выполнить функцию, которая возвращает таблицу и при этом удаляет данные из другой таблицы?

    @miroshnik Автор вопроса
    android/java dev
    Вообщем выкрутился из этой ситуации...
    Вместо конвейерной табличной функции я использовал просто табличную функцию. Возвращал полученное значение в соответствующий тип переменной в блоке pl/sql, а потом через цикл for выводил на экран полученные данные.

    Код функции:
    CREATE OR REPLACE FUNCTION DROP_EMPS (DEPT_NAME IN DEPARTMENTS.DEPARTMENT_NAME%TYPE) 
    	RETURN EMP_TAB AS  	
    
    		CURSOR C_EMPS IS
    		    SELECT E.EMPLOYEE_ID, (E.FIRST_NAME||' '||E.LAST_NAME) EMP_NAME
    		    FROM EMPLOYEES E
    		    WHERE E.DEPARTMENT_ID = (SELECT DEPARTMENT_ID FROM DEPARTMENTS D WHERE D.DEPARTMENT_NAME = DEPT_NAME)
    	      FOR UPDATE;
    
    	    CURSOR C_DEPTS IS
    	    	SELECT DEPARTMENT_ID FROM DEPARTMENTS D WHERE D.DEPARTMENT_NAME = DEPT_NAME;
    
    	    V_TMP_DEPT_ID DEPARTMENTS.DEPARTMENT_ID%TYPE;
    
    	    EMPS EMP_TAB := EMP_TAB();    
    
    	    MISSING_DEPT EXCEPTION;
    
    		BEGIN
    			OPEN C_DEPTS;
    			FETCH C_DEPTS INTO V_TMP_DEPT_ID;
    
    			IF C_DEPTS%NOTFOUND THEN
    				RAISE MISSING_DEPT;
    			END IF;
    	    
    	    CLOSE C_DEPTS;
    
    			FOR EMP IN C_EMPS LOOP			
    		        UPDATE EMPLOYEES
    		        SET MANAGER_ID = NULL
    		        WHERE MANAGER_ID = EMP.EMPLOYEE_ID;
    		        
    		        DELETE FROM JOB_HISTORY
    		        WHERE EMPLOYEE_ID = EMP.EMPLOYEE_ID;
    		        
    		        EMPS.EXTEND;
    		        EMPS(EMPS.LAST) := EMP_ROW(EMP.EMPLOYEE_ID, EMP.EMP_NAME);
    	        
    		        DELETE FROM EMPLOYEES     
    		        WHERE CURRENT OF C_EMPS;      	      
    			END LOOP;       
    	    RETURN EMPS;
    
    	    EXCEPTION
    	    	WHEN MISSING_DEPT THEN
    	    		RAISE_APPLICATION_ERROR(-20005, 'MISSING DEPARTMENT');     
    	    
    		END DROP_EMPS;
    END PKG_EMP;


    Вызов функции:
    SET SERVEROUTPUT ON
    DECLARE
      DELETED_EMPS EMP_TAB;
      V_EMP_ID NUMBER;
    BEGIN
      DBMS_OUTPUT.enable;
      DELETED_EMPS := DROP_EMPS('IT');
      FOR I IN 1..DELETED_EMPS.COUNT LOOP
        DBMS_OUTPUT.put_line(DELETED_EMPS(I).EMP_ID||' '||DELETED_EMPS(I).EMP_NAME);
      END LOOP;      
    END;
    /
    Ответ написан
    Комментировать
  • Как изучать клиент-серверную архитектуру?

    @miroshnik
    android/java dev
    javatutor.net/books/tiej
    Тут рассказываются основы создания клиент-серверного приложения на java
    Ответ написан
    Комментировать
  • Алгоритмы и Программирование?

    @miroshnik
    android/java dev
    Кнут очень трудный для понимания... Он даже спецовую дополнительную книгу написал в которой материал для подготовки к чтению его основных книг)
    Начните читать Кормена "Алгоритмы. Построение и анализ". Если покажется слишком сложным, то тогда одну из этих книг:
    Вирт Н. - Алгоритмы и структуры данных
    Дж. Макконнел Основы современных алгоритмов

    Во всех этих книгах есть описания самих алгоритмов/структур данных и псевдокод этого всего. Будет очень полезно, если вы 65% алгоритмов из книги закодите самостоятельно, смотря на псевдокод или описание. Таким образом вы прокачаете и алгоритмы и особенности выбранного языка)

    P.S. Насчет дополнительной книги мог спутать с каким-то другим автором)
    Ответ написан
    Комментировать
  • Методы оценивания

    @miroshnik
    android/java dev
    Можно воспользоваться сверткой критериев
    crypto.hut2.ru/svertka.html
    Ответ написан
    Комментировать
  • Почему может не включаться компьютер?

    @miroshnik
    android/java dev
    Если даже не включается, то скорее всего дело в БП. Попробуйте поставить другой БП. Если другого БП под рукой нет и не у кого взять, то тащите свой старый в любой сервис и попросите его проверить на работоспособность.
    Ответ написан
    Комментировать
  • D3JS. Динамическое добавление узлов в дереве?

    @miroshnik Автор вопроса
    android/java dev
    Ответ нашелся здесь: bl.ocks.org/mbostock/999346
    Ответ написан
    Комментировать
  • Как узнать, что HDD скоро выйдет из строя?

    @miroshnik
    android/java dev
    Проверить устройство /dev/sda и вывести результаты в файл badblocks_sda.list:
    # sudo badblocks -sv /dev/sda > ~/badblocks_sda.list

    Если бедов получилось больше нескольких, то надо задумываться о смене диска.
    Ответ написан
    Комментировать
  • Какой выбрать дистрибутив линукса "чтоб ездить", а не курить форумы и "допиливать"?

    @miroshnik
    android/java dev
    - намертво и неожиданно виснет, иногда позволяя в течение нескольких секунд поводить липнущим курсором мыши, замена видюшных драйверов не помогла

    У меня такое было. В моем случае эта неприятность появилась из-за моего intel hd 4000. Проблема решилась установкой ядра 3.11.8 + драйвер VAAPI.
    Установка VAAPI:
    sudo add-apt-repository ppa:wsnipex/vaapi
    sudo apt-get update
    sudo apt-get dist-upgrade
    sudo apt-get install i965-va-driver


    Как поставить нужное ядро, я думаю, найдешь сам.

    P.S. Пробовал Ubuntu разных версий, Fedora, Mint, что-то еще. Последние пол года сижу на Elementary OS (красивый дистрибутив на основе Ubuntu). И ни одним из этих дистрибутивов нельзя было пользоваться "из коробки", везде нужно было что-то настраивать, вникать в то, как устроена ОС. В этом "фишка" линукса. Если хочешь ездить без начальной нервотрёпки, то тебе нужна Mac OS.
    Ответ написан
    2 комментария
  • Какой дистрибутив Linux выбрать?

    @miroshnik
    android/java dev
    Я использую Elementary OS. Она на основе убунты, но, как по мне, работает стабильней и без лагов. Единственная проблема это глючный стандартный проводник, но заменить не проблема.
    Еще можно посмотреть в сторону Mint и Fedora.
    Ответ написан
    Комментировать
  • OpenMP. Параллельное решение СЛАУ?

    @miroshnik Автор вопроса
    android/java dev
    Решил, вроде как, задачку... Работает всё правильно. Вот код:
    #include <stdio.h>
    #include <math.h>
    #include <omp.h>
    
    #define N 4
    #define eps 0.0001 
    
    void jacobi(double a[N][N], double b[N], double x[N])
    {
    	int i, j;
    	double vectorNorm; 
    	double currentX[N];
    
    	do {		
    		vectorNorm = 0.0;
    		
    		#pragma omp parallel for private(i, j) 
    		for(i = 0; i < N; i++) {
    			currentX[i] = -b[i];
    			for(j = 0; j < N; j++) {
    				if(i != j)
    					currentX[i] += a[i][j] * x[j];
    			}
    
    			currentX[i] /= -a[i][i];
    		}	
    
    		#pragma omp parallel for
    		for(i = 0; i < N; i++) {
    			if(fabs(x[i] - currentX[i]) > vectorNorm)
    				vectorNorm = fabs(x[i] - currentX[i]); 
    			x[i] = currentX[i];
    		}
    	}
    	while(vectorNorm > eps); 
    }
    
    int main() {
    	int i, j;	
    	double matrixA[N][N] = {
    		{2,0,0,0},
    		{1,2,0,0},
    		{3,1,2,0},
    		{3,2,1,3}
    	};
    	double vectorB[N] = {1,1,1,1}, vectorX[N];	
    		
    	jacobi(matrixA, vectorB, vectorX);
    	
    	printf("Vector X:\n");
    	for (i = 0; i < N; i++) {
    		printf("%.3f ", vectorX[i]);
    	}
    	printf("\n");
        return 0;
    }
    Ответ написан
    Комментировать
  • MPI. Все выполняется в одном потоке?

    @miroshnik Автор вопроса
    android/java dev
    Проблема решилась. Причина была в кривых руках)
    В начале поставил mpich2 и оно не работало (хотя у друга все нормально запустилось), потом поставил именно openmpi и все заработало)
    Ответ написан
    Комментировать
  • Нужна интересная тема для диплома

    @miroshnik
    android/java dev
    Классификация текста. Наивный Байесовский классификатор, метод опорных векторов
    Ответ написан
    Комментировать