查找

问题
· 九月 4, 2024

image is not downloading

docker login -u=<username> -p=<password> containers.intersystems.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded

$ docker pull containers.intersystems.com/intersystems/irishealth:2024.1
Error response from daemon: unauthorized: The client does not have permission for manifest: Download request for repo:path 'docker-customer-remote-cache:intersystems/irishealth/2024.1/list.manifest.json' is forbidden for user: 'anonymous'.

why the download is not working.

2 Comments
讨论 (2)3
登录或注册以继续
公告
· 九月 4, 2024

Resumo de Aplicativos do InterSystems Open Exchange, Agosto de 2024

Olá e bem-vindos ao boletim de notícias do Open Exchange de Agosto de 2024. 
Status Geral:
2 novas aplicações em Agosto
502 downloads em Agosto
976 aplicações ao todo
36,294 downloads ao todo
2,801 desenvolvedores inscritos
Novas Aplicações
First-Vector-Search-on-IRIS
por Seisuke Nakahashi
DataAI
por Irina Yaroshevskaya
Atualizações
irislab by Dmitry Maslennikov
v1.1.0
Adicionado suporte para página de login. Vários namespaces suportam exibição de código-fonte de classes fixas.
v1.1.3
corrigido para executar em diferentes versões
v1.1.4
correção de bugs para 2024.1
v1.1.5
correção de bugs para 2024.1
Git for Shared Development Environments by Timothy Leavitt
v2.4.1

Adicionado

  • Novo endpoint para API que aceita comandos git como array ao invés de string (#437)

Corrigido

  • Erros de JS corrigidos no Studio em certas operações (#416)
  • Adicionar opção de menu desabilitada para arquivos não salvos (#420)
  • Corrigido problema em que selecionar um item diferente na lista de stash não atualizava a visualização diff (#265)
  • A dica de ferramenta no espaço de trabalho agora mostra o usuário que fez a alteração não confirmada se não for o usuário atual (#411)
  • Os arquivos são adicionados ao controle de origem corretamente após a criação (#404)
  • Os arquivos são exibidos na fila não confirmada quando adicionados automaticamente (#407)
  • A visualização do espaço de trabalho da WebUI agora funciona corretamente para nomes de arquivo com espaços (#423)
  • Popups de erro corrigidos em editores de interoperabilidade no Studio em 2024.1 (#417)
  • Alteração reintroduzida (#425)
  • Operações do Git que importam itens para o IRIS agora relatam a saída da compilação (#426)
  • Aspas duplas agora são permitidas em mensagens de confirmação (#433)
Test Coverage Tool por Timothy Leavitt
v4.0.0

[4.0.0] - 2024-08-01

Alterado

  • #29: Como consequência dessa mudança, a versão mínima da plataforma suportada é 2022.1

Adicionado

  • #29: Cobertura de código de rastreamento para métodos Python incorporados em arquivos .cls
  • #42: Foi adicionada uma interface de ouvinte e um gerenciador com um parâmetro de usuário associado, permitindo que o usuário transmita a saída na conclusão do método/caso/conjunto de testes.
v4.0.1

[4.0.1] - 2024-08-16

Corrigido

  • #45: Corrigido o rastreamento da linha 0 do Python para 2024.2
  • #46: Correção para bug causado por UpdateComplexity chamando GetCurrentByName desnecessariamente e causando problemas de dependência
  • #47: Corrigido problema de mapeamento causado por linhas vazias no topo do método Python não aparecendo no Python compilado
  • #48: Quando o Monitor Linha por Linha for retomado após pausar, retome o rastreador Python também
  • #49: Adicionado parâmetro de usuário para pré-carregar módulos Python (corrige problema de pandas quebrando sys.settrace na primeira importação)
  • v4.0.2

[4.0.2] - 2024-08-16

Corrigido

  • #51: Não inicie (e pare) os monitores ObjectScript e Python se não houver rotinas ObjectScript/Python sendo rastreadas respectivamente, corrige o erro de tentar iniciar/parar o %Monitor.System.LineByLine sem rotinas
v4.0.3

[4.0.3] - 2024-08-19

Corrigido

  • #52: O código de mapeamento de método agora não usa a propriedade endline_no do AST para oferecer suporte a versões mais antigas do Python #53: Ignore comandos rastreados do código sem um nome de classe
DeepSeeWeb por Anton Gnibeda
v4.0.4
  • adicionado suporte para excluir filtros em widgets de KPI (#303)
v4.0.5
  • adicionado suporte de drillthrough de KPI para gráficos (analytics/#421)
  • corrigido problema com compartilhamento de dashboard/widgets usando base64 (analytics/#270)
  • adicionada opção para desabilitar o envio de blocos (analytics/#310)
v4.0.6
  • a opção de alteração do push do bloco agora é aplicada imediatamente sem atualização da página (#310)
v4.0.7
  • corrigido problema com cores no widget de mapa
v4.0.8
  • problema corrigido com mapa vazio para mapas não-geojson
sqlzilla por Henrique Dias
v1.0.2
  • Melhoria UX/UI
  • Melhoria LLM prompt generation
v1.0.3
  • Refatoração de código
  • Armazenando exemplos em uma tabela
  • Botão para adicionar exemplos
  • Exemplos iniciais para esquemas de amostra
  • Tratamento de erro de execução de SQL
IRIS RAG App por Alex Alcivar
v1.0.2
Demo Removido
SQL DATA LENS por Andreas Schneider
v3.19.0
  • ENH: Melhorias de Setup 
  • ENH: O sistema de licenciamento foi atualizado para corrigir problemas com o código de erro 28 com base em um adaptador de rede desabilitado (PARTE 2). O processo de ativação precisa ler todos os componentes de um computador para obter uma "impressão digital" precisa do computador, e isso inclui todos os adaptadores de rede reais (também conhecidos como não virtualizados) conectados ao computador.
  • ENH: Biblioteca de interface JNA atualizada para 5.14
objectscript-package-example por Evgeny Shvarov
v1.0.2
Instalação IPM corrigida
iris-analytics-template por Evgeny Shvarov
v1.1.7
Correção das configurações de controle de origem para o painel
isc-perf-ui por Timothy Leavitt
v2.0.0

[2.0.0] - 2024-08-16

Adicionado

  • Nova aba home permitindo que o usuário execute e veja os resultados do TestCoverage em seus testes unitários
  • Nova aba de cobertura histórica mostrando resultados de nível de classe para execuções anteriores do TestCoverage

Alterado

  • A autenticação agora usa o login padrão do IRIS 

Corrigido

  • Manipulação fixa para cabeçalhos de autenticação para suprimir os prompts de credenciais do navegador
  • Comportamento de exportação fixo ao desenvolver com git-source-control e uma versão moderna do IPM
  • Documentação atualizada sobre o requisito node/npm

Segurança

  • Várias versões de dependência foram alteradas
iris-bi-utils por Evgeniy Potapov
v1.0.1
  • Verificar a construção dos cubos primeiro
isc-codetidy por Timothy Leavitt
v1.1.7

[1.1.7] - 2024-08-20

Corrigido

  • Adicionar chaves estrangeiras a itens de classe para resequenciar (#51)
  • Evitar recuo automático de linhas Python incorporadas até que o linting Python seja implementado (#52)
v1.1.8

[1.1.8] - 2024-08-27

Corrigido

  • Corrigido recuo automático de comentários dentro de matrizes dinâmicas removendo espaços em branco (#50)
  • Corrigida conversão de comentários #; no início da linha em rotinas causando erro de sintaxe (#55)
  • Corrigido resequenciamento de Projeções e XDatas para dar posições atribuídas (#54)
BridgeWorks VDM por Tony Coffman
v2024.8.21
O que há de novo?
  • O VDM agora tem um processo de autocorreção integrado para Compromissos Duplicados que às vezes causavam erros quando as pessoas estavam usando o Scheduler. (Tarefa 1631)
  • Ajustamos como o processo de seleção funciona no Scheduler - Criação de Job para que você não precise mais selecionar uma execução para ter acesso às opções de execução (Add Wizard, Edit Wizard, etc.). (Tarefa 1639)
  • Removemos as pastas legadas (Maps / VDMDB) que estavam sendo criadas ao instalar o VDM. (Tarefa 1642)
BridgeWorks WebReports por Tony Coffman
v2024.8.21
O que há de novo?
* O WebReports agora tem um filtro de data de execução na página Relatórios Concluídos. (Recurso 1633)
Utils por Eduard Lebedyuk
v1.0.2
Funções
Intersystems-Monitoring por Teunis Stolker
v1.0.16
StopProduction adicionado para quando o monitoramento estiver explicitamente desabilitado
iris-datapipe por Alberto Fuentes
v2.0.0
  • Painel adicionado
  • Definição de Pipes adicionada
  • Representação aprimorada de cada registro
  • Segurança aprimorada
  • Novos exemplos adicionados
Mais baixados
WebTerminal
Por Nikita Savchenko
MDX2JSON
Por Eduard Lebedyuk
DeepSeeWeb
Por Anton Gnibeda
ssl-client
Por Evgeny Shvarov
interoperability-embedded-python
Por Guillaume Rongier
iris-web-swagger-ui
Por Maks Atygaev
ClassExplorer
Por Nikita Savchenko
iris-fhir-portal
Por Henrique Dias
August, 2024Month at a GlanceInterSystems Open Exchange
讨论 (0)1
登录或注册以继续
文章
· 九月 4, 2024 阅读大约需 7 分钟

Cookie monster e outros problemas (e algumas soluções também) que encontramos ao programar com Django no IRIS WSGI

Como parte do concurso IRIS Python 2024, meu colega Damir e eu tivemos uma ideia de onstruir uma plataforma chamada ShelterShare para conectar vítimas e voluntários para requisições de abrigo. Para isso, escolhemos Django como uma framework e procedemos para construir a primeira versão ccom 3 docker containers diferentes, django, iris e nginx, que iriam então utilizar o IRIS puramente como uma máquina de base de dados pelo muito bem composto django_iris (cumprimentos ao Dimitry). Como progredimos rápido, decidimos explorar a opção de rodar ele dentro do mesmo container que o IRIS utilizando o  WSGI adicionado em 2024.1. Nós sabíamos em avanço que não poderíamos depender totalmente do WSGI, já que estávamos utilizando WebSockets para atualizações instantâneas e comunicação na ferramenta, mas descobrimos que podemos sempre rodar uvicorn no container em paralelo ao iris e juntar o websocket nele numa porta diferente.

Então, é aí que começamos a ter problemas...

Nosso primeiro problema foi que estávamos usando uma versão antiga de django-iris que estava dependendo de um pacote chamado iris que estava conflitando com o iris.py embutido (i.e. parte do IRIS WSGI). Percebemos que o problema foi resolvido num pacote posterior de django-iris ao renomear iris para intersystems_iris, então atualizamos o django-iris, resolvemos o problema e seguimos em frente.

Nosso segundo problema apareceu quando tentamos utilizar ipm para instalar o pacote do módulo. Por qualquer razão ele falhava em migrar com erros estranhos de ConnectionReset...

 

sheltershare    | Waited 3 seconds for InterSystems IRIS to reach state 'running'
sheltershare    | 
sheltershare    | Load started on 07/26/2024 14:39:06
sheltershare    | Loading file /usr/irissys/csp/sheltershare/module.xml as xml
sheltershare    | Imported document: sheltershare.ZPM
sheltershare    | Load finished successfully.
sheltershare    | 
sheltershare    | Skipping preload - directory does not exist.
sheltershare    | Load started on 07/26/2024 14:39:07
sheltershare    | Loading file /usr/irissys/csp/sheltershare/module.xml as xml
sheltershare    | Imported document: sheltershare.ZPM
sheltershare    | Load finished successfully.
sheltershare    | 
sheltershare    | Loading sheltershare in process 716
sheltershare    | [%SYS|sheltershare]	Reload START (/usr/irissys/csp/sheltershare/)
sheltershare    | [%SYS|sheltershare]	requirements.txt START
sheltershare    | Collecting Django==5.0.7
sheltershare    |   Using cached Django-5.0.7-py3-none-any.whl (8.2 MB)
sheltershare    | Collecting uvicorn[standard]
sheltershare    |   Using cached uvicorn-0.30.3-py3-none-any.whl (62 kB)
sheltershare    | Collecting channels
sheltershare    |   Using cached channels-4.1.0-py3-none-any.whl (30 kB)
sheltershare    | Collecting Faker
sheltershare    |   Using cached Faker-26.0.0-py3-none-any.whl (1.8 MB)
sheltershare    | Collecting django-iris
sheltershare    |   Using cached django_iris-0.2.4-py3-none-any.whl (134 kB)
sheltershare    | Collecting tzdata
####LOG TRIMMED FOR BREVITY####
sheltershare    | [%SYS|sheltershare]	requirements.txt SUCCESS
sheltershare    | Skipping preload - directory does not exist.
sheltershare    | [%SYS|sheltershare]	Reload SUCCESS
sheltershare    | [sheltershare]	Module object refreshed.
sheltershare    | [%SYS|sheltershare]	Validate START
sheltershare    | [%SYS|sheltershare]	Validate SUCCESS
sheltershare    | [%SYS|sheltershare]	Compile START
sheltershare    | [%SYS|sheltershare]	Compile SUCCESS
sheltershare    | [%SYS|sheltershare]	Activate START
sheltershare    | [%SYS|sheltershare]	Configure START
sheltershare    | [%SYS|sheltershare]	Configure SUCCESS
sheltershare    | Studio project created/updated: sheltershare.PRJ
sheltershare    | [%SYS|sheltershare]	Activate SUCCESS
sheltershare    | ShelterShare installed successfully!
sheltershare    | 
sheltershare    | 126 static files copied to '/usr/irissys/csp/sheltershare/static', 3 unmodified.
sheltershare    | /usr/irissys/mgr/python/django/core/management/commands/makemigrations.py:160: RuntimeWarning: Got an error checking a consistent migration history performed for database connection 'default': [Errno 104] Connection reset by peer
sheltershare    |   warnings.warn(
sheltershare    | No changes detected
sheltershare    | Traceback (most recent call last):
sheltershare    |   File "/usr/irissys/mgr/python/intersystems_iris/dbapi/_DBAPI.py", line 47, in connect
sheltershare    |     return native_connect(
sheltershare    |   File "/usr/irissys/mgr/python/intersystems_iris/_IRISNative.py", line 183, in connect
sheltershare    |     connection._connect(hostname, port, namespace, username, password, timeout, sharedmemory, logfile, sslcontext, autoCommit, isolationLevel, featureOptions, application_name)
sheltershare    |   File "/usr/irissys/mgr/python/intersystems_iris/_IRISConnection.py", line 304, in _connect
sheltershare    |     raise e
sheltershare    |   File "/usr/irissys/mgr/python/intersystems_iris/_IRISConnection.py", line 212, in _connect
sheltershare    |     self._in_message._read_message_sql(sequence_number)
sheltershare    |   File "/usr/irissys/mgr/python/intersystems_iris/_InStream.py", line 46, in _read_message_sql
sheltershare    |     is_for_gateway = self.__read_message_internal(expected_message_id, expected_statement_id, type)
sheltershare    |   File "/usr/irissys/mgr/python/intersystems_iris/_InStream.py", line 59, in __read_message_internal
sheltershare    |     self.__read_buffer(header.buffer, 0, _MessageHeader.HEADER_SIZE)
sheltershare    |   File "/usr/irissys/mgr/python/intersystems_iris/_InStream.py", line 138, in __read_buffer
sheltershare    |     data = self._device.recv(length)
sheltershare    |   File "/usr/irissys/mgr/python/intersystems_iris/_Device.py", line 40, in recv
sheltershare    |     return self._socket.recv(len)
sheltershare    | ConnectionResetError: [Errno 104] Connection reset by peer

os quais não conseguimos resolver, então voltamos a usar Dockerfile, entrypoint.sh e docker-compose para definir totalmente o django app na pasta /usr/irisys/csp, então usamos o ipm apenas para carregar nosso app.xml nas Security.Applications.

import iris
iris.system.Process.SetNamespace("%SYS")
imported_status=iris.cls("Security.Applications").Import("/usr/irissys/csp/sheltershare/app.xml", num_imported,0)

Isso funcionou bem e é um jeito confiável de fazer o deploy. Você pode ver um exemplo de definições aqui: ShelterShare-SingleDocker

Note porém que sem o merge.cpf, o script irissetup.py vai falhar em rodar o iris por causa de problemas de Autorização... i.e.
 

RUN \
  cd /usr/irissys/csp/sheltershare && \
  iris start IRIS && \
  iris merge IRIS merge.cpf

Agora chegamos num grande problema. Bom, grande para nós porque foi muito difícil entender o que estava acontecendo, mas no final foi bem fácil de contornar...

Veja, estávamos confiando na autenticação do django para lidar com nossas contas de usuários, grupos, etc. que utilizamos simplesmente ao fazer:

user_obj = authenticate(username=request.POST['username'],
                        password=request.POST['password'])
if user_obj:
    login(request, user_obj)
    return redirect("index")

Que funciona bem com gunicorn, uvicorn e até em simplesmente manage.py runserver... mas no IRIS ele falhou silenciosamente e jogava de volta à tela de login.

Após muito procurar, debugar o console browser e inspecionar, verificamos que em circunstâncias normais, o servidor WSGI/ASGI em questão (exemplo uvicorn, gunicorn) vai fazer o login com sucesso retornar 2 parâmetros de cookie nas headers, um com um token CSRF e algumas outras informações, enquanto o outro contém o id de sessão.

O id de sessão então é salvo ao armazenamento do browser e é utilizado sempre que acessa uma página no mesmo domínio.

No entanto, parece que o IRIS WSGI, por qualquer razão, combina as duas headers de Set-Cookie em uma só. Veja a diferença abaixo:

UVICORN:

 
IRIS WSGI:

 e o armazenamento de Cookie associado:

 Então começamos a entender como contornar esse problema já que o Browser estava obviamente ignorando o sessionid da header Set-Cookie, então tentamos o seguinte:

WORKAROUND:

user_obj = authenticate(username=request.POST['username'],
                        password=request.POST['password'])
if user_obj:
    login(request, user_obj)
    response = redirect("index")
    # Add your custom header
    # Extract the sessionid from the Set-Cookie header
    sessionid = request.session.session_key

    if sessionid:
        # Add the sessionid as a separate Set-Cookie header
        response.set_cookie('sessionid', sessionid, httponly=True)

    return response

e agora a sessionid e CSRF estavam ainda na mesma header Set-Cookie, mas o id de sessão estava bem no começo do Set-Cookie, então o browser conseguiu obtê-lo sem problemas

APÓS O WORKAROUND IRIS WSGI:

e o resultado no armazenamento de cookie do browser:

 

Então, com esse contorno do problema, a autenticação do django começou a funcionar adequadamente e pudemos usar a aplicação para a maioria dos conteúdos síncronos. No entanto, encontramos outro problema de POSTs não funcionando corretamente, possivelmente porque o token CSRF estava agora no final do Set-Cookie (ou alguma outra razão) e ainda não tivemos tempo para procurar mais contornos do problema. No fim, com problemas de POSTs e nossa necessidade de ASGI, voltamos aos iniciais três containers docker e planejamos investigar WSGI (e quem sabe ASGI) um pouco mais no futuro...

讨论 (0)1
登录或注册以继续
问题
· 九月 4, 2024

Forcefully remove database from mirror

An IRIS.DAT file was removed, as it was not needed anymore. But the database was mirrored, so it still shows up in the mirror monitor and database list. How can this be fixed? There is no backup of the .DAT file so it cannot be restored.

w ##class(SYS.Mirror).RemoveMirroredDatabase("/mydir/")

throws a protect error.

(everything else works fine and this is not a production system, it only is annoying in the mirror monitor and database list)

3 Comments
讨论 (3)1
登录或注册以继续
公告
· 九月 4, 2024

Septiembre trae otro Webinar en Español: "Reconocimiento facial aplicado al login de aplicaciones utilizando JavaScript + InterSystems IRIS"

¡Hola comunidad!

Este mes de septiembre os invitamos a un nuevo webinar en español: "Reconocimiento facial aplicado al login de aplicaciones utilizando JavaScript + InterSystems IRIS", el jueves 26 de septiembre, a las 4:00 PM (CEST).

     

El webinar va dirigido a técnicos y desarrolladores interesados en tecnologías punteras como es el reconocimiento facial y sus posibilidades.  

Durante el webinar, veremos cómo incorporar el reconocimiento facial en el login de aplicaciones mediante las tecnologías de InterSystems IRIS y JavaScript. Es muy interesante poder entender mejor estos sistemas y cómo funcionan. ¿Y qué mejor que uno de nuestros webinars para aprender un poco y arrancar la temporada?

¡Os esperamos!

🗣 Ponente: @Marco Bahamondes, Sales Engineer en InterSystems

➡️ Registro >>

讨论 (0)1
登录或注册以继续