Artigo não técnico sobre artigos técnicos

Eles costumam me dizer - ei, onde estão os artigos técnicos? Por que você está escrevendo todo tipo de besteira sobre gerentes, diretores, relações com funcionários, disputas corporativas, reclamando da falta de sentido do nosso trabalho e em geral. Queremos artigos técnicos!

Sinceramente, não entendo o que são "artigos técnicos". Entendo o que é uma "tarefa" e o que é uma "solução". Também entendo que a solução para o mesmo problema pode ser encontrada em diferentes níveis - do "ferro" ao filosófico. Qual nível está mais correto - eu não sei.

Para entender, você precisa de sua ajuda. Eu tenho um ótimo exemplo de ponta a ponta de resolver um problema em um nível diferente. Eu o aviso imediatamente - um exemplo da esfera de 1C, mas seus belos cérebros terão um lugar para se aplicar. Vamos tentar encontrar um lugar para um "artigo técnico" nesta cadeia.

Um exemplo é um coletivo de várias histórias reais. Quero dizer, foi repetido várias vezes, com diferentes atores, ativando / desativando diferentes estágios, mas a essência é a mesma. Perseguido.

situação inicial


A situação inicial é simples: o cálculo do custo de 1C não é concluído.

Para aqueles que estão longe do mundo amarelo, vou explicar. O custo é aproximadamente a operação que consome mais recursos que ocorre no 1C. É realizado no final do mês, às vezes, à moda antiga, é chamado de "fechamento do mês".

Dentro de um mês, o chamado "Documentos primários" - recebimento de materiais, transferências entre armazéns, lançamentos de produtos, baixas do armazém para produção, ajustes, recebimento de custos, distribuição, montagem etc.

A essência de todos os documentos é a mesma: algo está fluindo em algum lugar. De armazém em armazém, de armazém em produção, de produção em armazém, de uma oficina para outra, de uma nomenclatura para outra. Grosso modo, há uma mudança no estado dos estoques e custos. Não havia nada - tornou-se material. Havia material - tornou-se um custo. Foi um custo - tornou-se um produto. Foi a produção - tornou-se material novamente. Foi produtos - tornou-se receita. Era eletricidade - tornou-se um custo. Foi um custo - incluído no custo de produção. Apenas uma mudança no estado da essência, se você raciocinar abstratamente.

A coisa toda é registrada em um mês em uma tabela grande, que é processada pelo cálculo de custos. Ele tem duas tarefas principais - alocar custos e ajustar custos. Distribuir custos - é como incluir no custo de produção tudo o que foi gasto nessa questão, como materiais, eletricidade, salários, etc. (antes de calcular o custo, eram entradas de tabela diferentes, liberar separadamente, custos separadamente). Bem, ajustar o custo é decidir que o SLAE traga o custo para a estratégia de baixa desejada (média ou FIFO).

Então, suponha que toda essa porcaria não funcione. Começamos, espere um dia, depois cai. Sabe-se que o cálculo é realizado em um servidor executando o Windows Server 2012, em um processo rphost.exe, DBMS - MS SQL.

Nível do ambiente


O primeiro nível é puramente patsansky. Não queremos saber nada sobre o 1C, olhamos apenas para o ambiente. O que, em geral, nos importa o que esse infeliz 1C faz lá? Nós já sabemos que ela faz tudo errado, mas de alguma forma podemos ficar sem o arrogante.

O campo para experimentação é enorme. Bem como material de verdade, sem aspas, artigos técnicos.

Vamos começar com a escolha do hardware do servidor. Afinal, ele provavelmente foi pego por 1Sniks, que não petrificam nisso. Escreveremos sobre o efeito da quantidade de RAM no desempenho de operações pesadas de 1C, examinaremos os discos rígidos de diferentes projetos físicos, veremos o que é mais importante - o número de processadores ou núcleos. Na prática real, também solicitaremos um novo servidor. Especialmente considerando as reversões que os provedores de servidores pagam.

A seguir, vejamos o sistema operacional. Não é bom manter servidores decentes no Windows? Além disso, o 1C tem sido capaz de trabalhar no Linux. E, finalmente, o cluster é suportado no 1C, e nós, formalmente, podemos fornecer dois ou mais servidores, mesmo em diferentes sistemas operacionais. Aqui será uma mãe para o artigo.

Bem e, é claro, não vamos ignorar um DBMS. Por que diabos todos se depararam com esse MS SQL? Pelo menos, vejamos o Postgre, que a 1C apoia há cerca de 100 anos, mesmo no Windows. Não apenas tentaremos outro DBMS, como também o ajustaremos para que o ruído permaneça. É verdade que muitos artigos já foram escritos sobre esse tópico, incluindo Própria empresa 1C, mas certamente encontraremos o que dizer em nosso artigo técnico. Afinal, é interessante ler as experiências das pessoas, não os manuais.

Vamos resolver o problema? Não excluído. A prática mostra que muitos problemas são resolvidos nesse nível - especialmente quando problemas com o cálculo de custo, a primeira ocorrência, ou seja, naquele momento, quando todas as configurações do sistema operacional e do DBMS eram padronizadas.

Mas a nossa história é um pouco diferente. Todas as possibilidades já foram esgotadas, as melhores mentes da cidade apareciam no servidor - além disso, compradas há três meses. Então, imediatamente após o lançamento, o servidor interrompeu o cálculo dos custos em apenas 16 horas. E agora, infelizmente, por algum motivo, e por um dia não pode lidar.

Tem que subir um nível.

Nível 1C


Ok, largue o ferro, suba para o programa. Uma simples medição de desempenho mostra que 1C congela e trava ao executar uma operação de alocação de custos.

Ali, de fato, tudo é simples. Há uma tabela na qual, no momento do cálculo de 8 milhões de registros. Grosso modo, metade deles são custos, a segunda metade é a base de distribuição. Essa. você precisa pegar a primeira metade e correr para a segunda.

Sentamos e pensamos - onde é que vamos cair, querida? Pesquisa banal, embora acompanhada de consultas constantes ao banco de dados com armazenamento de resultados intermediários em tabelas temporárias. Bem, talvez o problema seja que o resultado não possa ser registrado, ou seja, adicione até 8 milhões de registros.

Nada complicado, mas caindo. O processo rphost.exe está faltando alguma coisa. Então, pare ... E por que uma operação tão simples e, em geral, não particularmente sensível ao contexto, é um processo único? Quem evita dividir a mesa ao meio, ou mesmo em três partes, e executar em paralelo? Afinal, o 1C é capaz de iniciar pelo menos 20 processos, mas, por algum motivo, não. Então por que não? Ou faz?

Sim, descobrimos que nossa versão do 1C está um pouco desatualizada e, em uma paralelização mais moderna, é feita diretamente nas configurações - uma pessoa pode dizer com antecedência quantos threads paralelos desses mesmos "cálculos" podem ser executados. Bagunça!

Adicionamos um código simples que corta a tabela no número necessário de partes e as executa em paralelo. Deixe-me lembrá-lo de que a distribuição de alguns custos não depende da distribuição de outros, na estrutura de uma iteração.

Ei! Ganhou! Falha no cálculo do custo! Às vezes, no entanto, existem bloqueios para gravação - não importa, anexamos um patch na forma de um cache de registros com um bloqueio controlado para posterior colocação na tabela principal. A beleza! Trabalho!

U, quantos artigos podem ser escritos aqui! Técnico! É verdade, com um pouco de cor amarela. Embora, por outro lado, onde o nosso não tenha desaparecido? O que, em seu ambiente de desenvolvimento e em seus projetos, não foi necessário dividir o registro de milhões de linhas em pedaços para que o DBMS não morresse?

Tudo, uma vitória, ao que parece. Mas algo está roendo ... O custo foi calculado, mas ainda assim - por muito tempo. No mesmo dia, parou de cair - o volume de registros não diminuiu, apenas escrevemos em pedaços, pseudo-em paralelo.

Rastrear mais alto.

Nível da configuração técnica 1C


Analisando o algoritmo, entendemos que o problema não está apenas no número de registros, mas também no processamento múltiplo. Teoricamente, entendemos que, para distribuir 4 milhões de registros para outros 4 milhões, basta preencher uma consulta na qual corresponder as linhas pelos analistas necessários e, em seguida, registrar o resultado.

E aqui olhamos - inferno, e há um ciclo ... Um ciclo que corre de acordo com uma tabela de 4 milhões de linhas. E há outro ciclo nele, com uma interrupção incondicional de acordo com alguma condição estranha. E o corpo do loop aninhado executa muito mais de 4 milhões de vezes. Panqueca…

Procurando, encontramos a terceira tabela, que armazena as configurações de distribuição. Grosso modo, está a comparação dos primeiros 4 milhões de registros com o segundo. Mas tudo é organizado lá não de forma inequívoca, mas com um estreitamento gradual do filtro. No início, ele foi escrito como "todos os custos com vista à produção geral estupidamente estúpida para lançamento", depois "mas este artigo também é para lançamento", depois "mas este artigo é necessário para esta divisão também é para lançamento", depois é especificado para o grupo de nomenclatura, contas contabilidade, etc.

O pior é que o algoritmo não determina a configuração de distribuição em uma única passagem, mas o faz ciclicamente, aproximando-se gradualmente da meta. Apesar de o resultado ser, no final, o mesmo. E, não, isso não é a pior coisa - existem 10 mil registros nesta tabela. Explicitamente conduzido pelas mãos.

Lembramos como os contadores trabalham com essas configurações. Os programadores direcionaram 4 linhas para a tabela, com o filtro mais amplo. E os contadores tinham algo "não fechado" - eles pararam e especificaram um filtro para um artigo específico e um departamento específico. E assim fizeram 10 mil vezes, ao longo dos anos.

Como resultado, nossos 4 milhões de registros percorrem os outros 4 milhões de registros várias vezes. Bem, buscamos coragem e vamos ao departamento de contabilidade. Não para o contador-chefe - ela provavelmente não está a par dessa situação. Vamos começar com o vice-chefe.

Chegamos, explicamos o significado dessa tabela de ajuste e informamos (novamente) como usá-la. Estamos convencidos de que tudo ficará bem. Montamos uma base de testes, realizamos um experimento, depois de bater 10 mil registros, e pronto - o cálculo do custo levou apenas 8 horas!

Gay! Que artigo legal você pode escrever agora! Será apenas técnico? Bem, eu não sei ... Para certas comunidades amarelas, provavelmente sim. Tudo bem, seja técnico e metodológico. Ao mesmo tempo, adicione alguns parágrafos sobre quais contadores estúpidos.

E aí vem o pensamento - desde que eu consegui entrar em contabilidade, talvez algo mais para escolher? Por exemplo, para entender por que existem 8 milhões de entradas na tabela e, o mais importante, por que há mais e mais deles todos os meses.

Estamos tentando subir um nível mais alto.

Nível contábil


Está claro para nós programadores que o número de linhas em uma tabela é determinado pela largura da análise usada e não pelo volume de saída. Além disso, sabemos que a produção de uma empresa nativa, como sua linha de produtos, está crescendo muito mais lentamente que o tamanho da nossa tabela.

Por exemplo, se nossa única análise do problema fosse uma unidade, o número de linhas na tabela não seria superior a 2 * o número de unidades diferentes (metade para liberação, metade para custos). Essas divisões estão conosco, Deus não permita, cem.

Se adicionarmos, por exemplo, a analítica “Item de custo”, o número de registros será (Número de unidades) * (Número de artigos) + (Número de unidades), porque a segunda metade da tabela (release) não contém análise de artigo (como regra, se não houver transferência) produto semi-acabado de uma unidade para outra sem a utilização de um armazém). A pior coisa nesta equação é *, ou seja, multiplicação. 100 divisões e 100 artigos - já 10 mil registros.

Então multiplicamos pelo número de nomenclaturas, características, ordens de produção, grupos de nomenclaturas, caramba ... Então está ganhando 8 milhões

ou não está ganhando? Contamos na calculadora - não, não é um figo. Mais precisamente, mesmo sem uma calculadora, fica claro que o número de registros não deve crescer tão rapidamente, mês a mês.

Expandimos o relatório sobre saldos no contexto de todos os analistas utilizados, e - bah! - Bem, cachorro, estupidamente não fecha! Deixe-me explicar o que significa "fechar". Foi quando o saldo de recrutamento do analista chegou e no final do mês ele saiu. Mas não fecha - quando não sai. Assim, o trabalho em andamento é formado, ou seja, o trabalho em andamento.

E não fecha exatamente de acordo com uma análise - um pedido de produção. Para cada lote de produtos, é configurado um determinado documento que separa esse lote do tipo do restante. Os custos são enviados a ele (primeira metade da tabela), a produção é refletida nele (segunda metade da tabela) e tudo deve ser fechado. Mas não fecha.

Deputado o contador-chefe, que está sentado perto, também está em choque. Eu não sabia que não estava fechando - está tudo certo! Procurando, descobrindo - eles, contadores, apenas olham os relatórios sem levar em conta os pedidos. Tudo está fechado sem essa análise, mas não com ela.

E esses rabos-de-cavalo - montantes não fechados para ordens de produção - também são incluídos em 8 milhões de linhas, são os saldos recebidos do início do mês que devem ser fechados no mês atual (em princípio, isso acontece se a produção durar vários meses, mas não ocorre) nosso caso). O problema é que eles não podem ser fechados conosco, porque não haverá mais liberação de pedidos do mês passado, e os custos são obrigados a manter uma existência miserável por mais um milhão de anos, aumentando constantemente o número de entradas na tabela de distribuição.

Corremos para a nossa base de testes, removemos todas as caudas e - coma sua perna! - registros no cálculo tornam-se 1 milhão! O cálculo já cabe em 2 horas!

E já temos o entusiasmo de um pesquisador - afinal, esse material para um artigo técnico está bicando! Removemos as caudas e, este mês, a análise de pedidos ainda está presente. Ok, Che, a base de teste - cortamos pedidos em geral e a tabela cai para 400 mil registros.

O cálculo é de 1 hora. 1 hora, Karl! Reduzimos o tempo de cálculo em 24 vezes! Bem, agora vamos escrever um artigo em tachen, quase técnico, que você fará o download!

É verdade que resta explicar ao contador principal que a análise de pedidos é supérflua. Nós rolamos também rastejamos para o segundo andar.

Nível de Estratégia Contábil


Nós nos consolamos com a esperança de que tudo dê certo. No final, resolvemos o problema de calcular o custo de produção - e como! Assumimos que o contador principal não está ciente das configurações dos detalhes do cálculo, e alguém apenas uma vez incluiu a análise de pedidos, que seja assim.

Mas não. Assim que o contador-chefe ouviu "desligar a análise de pedidos", ficou completamente furiosa. Comecei a discutir sobre a incrível necessidade de a empresa ter uma imagem completa do custo de produção e, o mais importante, comparar números precisamente no contexto de pedidos, dentro da estrutura de uma contraparte e mensalmente.

Reunimos uma grande quantidade de ar e fazemos a pergunta principal: Marivanna, você já fez essa análise? Por vontade própria ou por ordem de outras unidades?

Bem, por alguns minutos ouvimos uma variedade de adjetivos e substantivos, derivados principalmente de apenas quatro palavras dos grandes e poderosos. Lembre-se mentalmente dos endereços de sites com vagas. Mas decidimos ir até o fim.

Não estamos deixando o contador-chefe terminar, estamos dizendo que está tudo bem, mas quero encontrar a fonte dessa demanda. O contador-chefe enlouquece e envia ao diretor financeiro, que é seu chefe, e economistas.

Esses caras são mais simples, e o álcool no sangue já é suficiente para conversar com eles. Enquanto estamos indo, estamos pensando - o que você pode escrever sobre esta aventura? Nada técnico, obviamente. Embora o problema seja visível a olho nu. Bem, isto é é claro que em todos os níveis abaixo estávamos resolvendo um problema inexistente.

Nível de jogo corporativo


E o Finder é nosso amigo. Ajudamos muito com essa tia divertida com automação. Portanto, perguntamos na testa - o que para a contabilidade mantém registros com uma análise tão ampla? Sim, que merda.

Minha tia imediatamente se apega à palavra "merda" - o que é uma merda, onde é uma merda, é realmente uma merda? Bem, sim, dizemos merda, realmente merda. Por causa disso, o departamento de TI não dorme por muitas noites, rabisca vários artigos técnicos e geralmente se queima.

Tia pega o touro pelos chifres e pede para declarar tudo por escrito - o que está errado, por que e como cheguei a isso. Ok, prometemos declarar. Mas, novamente, vamos até o fim. O que, dizemos, o contador-chefe está envolvido nesse lixo, além disso, sob o disfarce de um buscador, ou seja, você é tia

Temos uma resposta na testa - e deixamos que isso o atormente, réptil. Nefig foi esperto nas reuniões. Dizendo que não há nada mais importante do que contabilidade. Afirmar que é errado subordinar o contador principal ao inventor. Carregar bobagens sobre o fato de o contador-chefe ser a segunda pessoa na empresa, depois do diretor.

E por que, digamos, simplesmente não a demiti? Mas você não pode, diz tia. Bem, parecerá a eliminação de objetáveis ​​- como, minha tia errou e imediatamente saiu do trabalho. Um sino desagradável será para o diretor. Ele começará a investigar como alguém mantém registros.

E agora - uma pintura a óleo. O contador principal não lida com a contabilidade. Coloque a base de lado. Portanto, se não fosse útil para os negócios, eu não organizaria uma contabilidade de custos normal para pedidos.

Nesse meio tempo, perguntamos - e você, tia, o que essa contabilidade de pedidos e até mesmo a contabilidade? Ele responde na testa - ele não me cavou em lugar algum. Nem economistas nem financiadores usam números contábeis. Apenas documentos primários.

Diz assim? E de onde você tira o preço de custo? Bem, você não pode contar com o lucro sem ele.

Sami, diz, consideramos o custo. Utilizando o método de caixa, coletamos os custos de material a preços de compra e os distribuímos no exel, usando o método da caldeira, utilizando taxas de consumo de material, ajustadas ao fato apenas por valores.

Porque, minha querida, nossa tarefa em termos de custo é fornecer ao diretor uma folha em formato A4 chamada “Demonstração de lucros e perdas”, onde todos os custos são divididos em dez grupos, pouco correlacionados com os itens de contabilidade de custos.

Grosso modo, tudo o que a contabilidade faz não é necessário para ninguém, exceto a contabilidade. E contabilidade, contabilidade de custos é necessária em uma análise muito curta - mesmo a que está presente nas contas contábeis. E lá, Deus proíba, se três analistas forem digitados.

Deixamos o escritório do pesquisador com sentimentos contraditórios. Por um lado, ao que parece, eles descobriram tudo - não há necessidade de resolver o problema, e o problema de calcular o preço de custo desaparecerá para sempre. Por outro lado, eles foram atraídos para jogos corporativos.

Agora como. Você escreverá um pedaço de papel sobre o contador principal - você se tornará um inimigo para sempre. Se você não escrever, perderá a amizade com o localizador e não se dará bem com os surdos. Ela não acreditaria, se você contasse uma história como "me pediram para pingar em você, mas recusei".

E não há nada sobre o que escrever um artigo técnico. Geralmente. Embora você já entenda que resolver todos os problemas nos níveis mais baixos não é inútil - é prejudicial. Afinal, todo o esforço e dinheiro (lembra-se do novo servidor comprado recentemente?) Não foi para o benefício da empresa, mas para o benefício de uma tia que é amiga contra outra.

O clima é imundo, e então o diretor chama minha atenção. Mais precisamente, chamamos sua atenção. O cara está bem gasto, vê um mau humor e imediatamente liga para o escritório.

Subimos para um nível superior.

Nível de pássaro


Decidimos contar tudo. De cima para baixo, sem enfeites. Sobre todo mundo. Não há nada a perder.

E sobre o servidor por 1 milhão de rublos, o que agora não é necessário. E sobre a equipe inchada de contadores, necessária para manter uma contabilidade tão complexa que, como se viu, ninguém precisa. E sobre a equipe inchada de programadores, necessária apenas para acompanhar a contabilidade idiota. E sobre a tia-descobridora, que joga seus jogos às custas da empresa.

O diretor ouve atentamente, às vezes fazendo perguntas de natureza técnica e metodológica. Ele domina diretamente assim, na hora em que percebe que já trabalhou como programador.

E ele escreve todos os números em um pedaço de papel.

Nós derramamos toda a alma do programador. Sobre o fato de termos nascido para resolver problemas técnicos e não participar de jogos corporativos. Sobre o fato de que o nível técnico da solução deve ser o último, quando todos os outros métodos estiverem esgotados - organizacional, metodológico, estratégico e o que mais existem. Sobre natureza criativa, pensamento abstrato, introvertidos e outros contos de programação.

E no caminho, pensamos que artigo legal seria. Apenas não é técnico. E onde colocá-lo? Também é um problema. Fingir em um artigo que tudo foi decidido em nível técnico e limitado a ele? Mas não é verdade. Mas se você disser que chegou ao diretor, eles não acreditarão. O lugar do programador na fábrica fica perto do balde, com licença.

O diretor educadamente escuta o final, depois desenha uma linha sob seus números e dá: amigo, você revelou um problema que me custa 1 milhão de rublos por mês. Muito obrigado. Certo assim, sem um ponto de exclamação.

Agora, ele diz, será assim. Iniciamos o projeto de colocar a contabilidade em ordem. Você será o líder. Estou demitindo CIOs, você está tomando o lugar dele. Instruirei o serviço de segurança para verificar se ele recebeu propinas pela compra de equipamentos.

Aguardo com expectativa um plano claro de contabilidade, contabilidade e administração. Para que tudo seja bonito e interconectado, mas apenas na análise correta. Você implementará esse plano. Qualquer alteração na contabilidade agora será implementada somente após a sua aprovação.

Em termos de contabilidade deve ser o cálculo do número necessário de especialistas. Extra - dispararemos sem borrar o ranho. Pense imediatamente em como você pode automatizar as atividades das demais - talvez haja muitas delas, se você se aproximar com sabedoria.

Não fique arrogante, cara. Você está trabalhando para mim agora. Você será meus olhos e meu cérebro técnico. Sem jogos - nem comigo nem com mais ninguém.

Partimos, com pernas surpreendentes, e nos arrastamos para o porão. A cabeça está girando - da felicidade ou do medo. Eu quero escapar, como se fosse um sonho estranho, apenas para retornar à minha realidade habitual. É mesmo assim?

Não, não é. Eles não vão acreditar. E você não escreverá um artigo sobre isso. Eles vão bicar, bicar e enviar artigos à Cosmopolitan para escrever sobre a IT Cinderella. E ele não teria acreditado. Mais precisamente, eu diria que não acredito, apenas para não admitir que tenho medo de sair do meu buraco e perguntar: "devo foder essa besteira?" Embora em um nível técnico brilhante.

Na verdade, a pergunta


Onde está o nível técnico aqui? O que é interessante e útil para escrever e ler artigos técnicos? Aqui está um exemplo direto.

All Articles