Pull to refresh
22
0
Денис Зыков @shai_hulud

Пользователь

Send message
я немного подкорректировал вашу первую схему и в модели появилась гармония
39.07 КБ
троллефобия это болезнь
>поддерживает выполнение запросов на языке SQL
>Работа с данными осуществляется через хранимые процедуры на языке Java, копии которых прикрепляются к каждому из разделов (ODBC/JDBC и прямое выполнение SQL-операторов для всей базы не поддерживается)

вот тут можно немного пояснений?
когда вы последний раз вставляли бобину в стример…
а пять — это «Пентиум». Уже сегодня вы можете приобрести современную® мультимедийную® платформу® на базе процессоров Intel® Pentium®…

П.с. Текст предоставлен на правах бреда.
*ушел править пагинатор*
print 'привычек в наличии — ' + xxx
с нетерпением жду открытую eve, а пока хочется декомпилятор
изучение чужих продуктов, весьма расширяет кругозор. Задача довольно интересная, почему её полностью никто, из такого большого комьюнити, не смог решить. Наводит на мысли
Ну к чему сарказм. В интернете есть несколько полумертвых проектов depyc, unpyc, depython. они успешно валятся на половине исходников. Есть онлайн сервисы у которых покрытие крешами и фатал еггогами сравнимо с вышеуказанными проектами.
[offtopic] а у богатого на сообщества питона есть нормальный декомпилятор для версии 2.6?[/offtopic]
давайте еще навернем реалий и скажем так — хорошо написанная ORM генерирует более оптимальные запросы чем плохо сделанный программист.
try
{
MainLoop()
}
catch
{
// Ничо небыло, небыло н-и-и-ч-его, всё работает как надо, вам показалось
// Бабуськи, бабуськи, бабуськи, *вуи-и-и-и-и-и*
}
Пока у EA есть Кукан на него будут садить фанатов, и зарабатывать деньги.
Больше всего раздражают не обычные спамеры и «рыбаки», а те кто забывают добавить ссылку или номер смс.
Посмотрел, выругался, отформатировал, назвал переменные, выделил места для асертов.

package upload;

import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.ptr.PointerByReference;
import com.sun.jna.win32.StdCallLibrary;
import java.io.IOException;

/**
*
* @author samozvanka
*/
public class Win32GetFileInformation
{
  //+ declare before using
  private static byte[] Hexhars = "«0123456789abcdef".getBytes();
  
  public String FileVersion;
  private String LanguageCodePage;
  private PointerByReference InfoData;
  
  public interface Win32VersionDLL extends StdCallLibrary
  {
    Win32VersionDLL INSTANCE = (Win32VersionDLL) Native.loadLibrary(
        "Version", Win32VersionDLL.class);
    
    Integer GetFileVersionInfoSizeA(String FilePath, IntByReference Handle);

    Boolean GetFileVersionInfoA(String FilePath, int Handle, int InfoSize,
        PointerByReference InfoData);

    Boolean VerQueryValueA(PointerByReference InfoData,
        String VersionInformation, PointerByReference VersionData,
        IntByReference DataSize);
  }

  public void Win32GetFileInformation(String FilePath) throws IOException
  {
    IntByReference unusedParam = new IntByReference();
    
    int infoSize = Win32VersionDLL.INSTANCE.GetFileVersionInfoSizeA(FilePath, unusedParam);
    if (infoSize == 0)
    {
      throw new IOException("File does not exist or has no information.");
    }

    this.InfoData = new PointerByReference();
    
    Boolean success = Win32VersionDLL.INSTANCE.GetFileVersionInfoA
    (
        FilePath,
        unusedParam.getValue(),
        infoSize,
        this.InfoData
    );
    
    //+ Assert(success, "GetFileVersionInfoA in Win32GetFileInformation is failed")
    
    PointerByReference versionDataByRef = new PointerByReference();
    IntByReference dataSize = new IntByReference();
    Pointer versionDataPointer = null;
    
    // Retrieve the language information
    success = Win32VersionDLL.INSTANCE.VerQueryValueA
    (
        this.InfoData,
        "\\VarFileInfo\\Translation",
        versionDataByRef,
        dataSize
    );
    
    //+ Assert(success, "VerQueryValueA in Win32GetFileInformation is failed")
    
    System.out.println("DataSize.getValue() = " + dataSize.getValue());
    
    versionDataPointer = versionDataByRef.getValue();
    byte[] codePageBytes = versionDataPointer.getByteArray(0, dataSize.getValue());
    byte BSwap;
    // swap 0<->1 and 2<->3
    BSwap = codePageBytes[1];
    codePageBytes[1] = codePageBytes[0];
    codePageBytes[0] = BSwap;
    BSwap = codePageBytes[3];
    codePageBytes[3] = codePageBytes[2];
    codePageBytes[2] = BSwap;
    // got 1,0,3,2
    
    this.LanguageCodePage = decode(codePageBytes).toUpperCase();
    
    //// Retrieve file information
    this.FileVersion = QueryValue("FileVersion");
    
    System.out.println("FileVersion = " + this.FileVersion);

  }

  private String QueryValue(String ValueName)
  {
    IntByReference dataSize = new IntByReference();
    PointerByReference versionDataByRef = new PointerByReference();
    Pointer versionDataPointer = null;
    Boolean success = Win32VersionDLL.INSTANCE.VerQueryValueA
    (
        this.InfoData,
        "\\StringFileInfo\\" + this.LanguageCodePage + "\\" + ValueName, //"
        versionDataByRef,
        dataSize
    );
    
    //+ Assert(success, "VerQueryValueA in Win32GetFileInformation is failed")
    
    versionDataPointer = versionDataByRef.getValue();
    if (versionDataPointer == null)
    {
      return "";
    }
    else
    {
      versionDataPointer = versionDataByRef.getValue();
      return versionDataPointer.getString();
    }
  }

  private static String decode(byte[] encodedString)
  {
    StringBuilder result = new StringBuilder(2 * encodedString.length);
    
    for (int i = 0; i < encodedString.length; i++)
    {
      int v = encodedString[i] & 0xff;
    
      result.append((char) Hexhars[v >> 4]);
      result.append((char) Hexhars[v & 0xf]);
    }
    
    return result.toString();
  }
}

* This source code was highlighted with Source Code Highlighter.
вы выкололи себе глаза
Это как утверждать, что «дверные замки не защищают от воровства т.к. вор может установить свой замок и беспрепятственно проникать в жилище»
>Строгое имя не может защитить от подмены сборки
неверное утверждение. попробуйте модифицировать System.dll и вы поймете в чем проблема.

подписанные сборки защищены от подмены. Тот факт, что можно снять подпись и подкорректировать все остальные сборки не дает права говорить что защиты нет. Она есть и её можно сломать.
а можно просто отписываться от событий тогда когда подписчик в них больше не нуждается? Ежели система без четкого определения жизненного цикла объектов, то никакие костыли и заплатки ей не помогут.

Information

Rating
4,344-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity