Encerramento do serviço Typepad e orientações para transferência de domínios
(ttimo.typepad.com)- Com o encerramento do Typepad, operadores de blogs existentes precisam decidir por conta própria sobre a transferência de domínios e conteúdos enquanto o login e o acesso a arquivos estão bloqueados
- A data de encerramento do serviço é 30 de setembro de 2025; depois disso, o login nas contas não será mais oferecido
- Clientes que pagaram a taxa anual por um período posterior à data de encerramento receberam reembolso proporcional; se o reembolso não aparecer no extrato, é preciso verificar com o banco
- Todos os dados dos blogs serão excluídos, e não haverá extensão de acesso nem caminho de recuperação, exceto para consultas relacionadas a dados pessoais
- Domínios registrados no Typepad Domains serão transferidos para o Reseller Club em 27 de outubro de 2025; para conectar uma nova plataforma, é necessário remover o CNAME existente do Typepad
Tratamento de contas e dados após o encerramento do serviço
- A data de encerramento do serviço Typepad é 30 de setembro de 2025
- Após a data de encerramento, os usuários não poderão mais fazer login em suas contas
- Clientes que pagaram a taxa anual do serviço por um período posterior à data de encerramento receberam reembolso proporcional
- Se o reembolso não aparecer no extrato, é preciso entrar em contato com o banco
- Se não houver um cartão de crédito válido registrado, o reembolso pode não ter sido processado
- Após o encerramento, o acesso aos arquivos será interrompido, e nenhuma extensão separada será oferecida
- Todos os dados dos blogs serão excluídos, e consultas relacionadas a dados pessoais devem ser enviadas para privacy@newfold.com
Transferência do Typepad Domains e conexão de um novo blog
- O Typepad Domains é um revendedor da LogicBoxes, e todos os domínios registrados no Typepad Domains serão transferidos em 27 de outubro de 2025 para o Reseller Club, outro parceiro da LogicBoxes
- Esses usuários receberão um e-mail com instruções adicionais do Reseller Club
- Não é necessário transferir o domínio da LogicBoxes para outro lugar; ele poderá continuar sendo gerenciado posteriormente pelo Reseller Club
- Para conectar o domínio a um novo serviço ou plataforma de blog, é preciso remover o registro CNAME que aponta para o Typepad e configurá-lo conforme os requisitos do novo serviço
- Antes de 27 de outubro de 2025, faça login no Typepad Domains para configurar
- Depois de 27 de outubro de 2025, faça login no Reseller Club para configurar
- Mesmo ao usar outro registrador que não seja o Typepad Domains, é preciso remover nesse registrador o registro CNAME que aponta para o Typepad e configurá-lo para apontar para o novo serviço ou plataforma de blog
- Leitores que procuram um blog específico devem perguntar diretamente ao blogueiro onde o blog foi republicado
- Consultas adicionais podem ser feitas por telefone ou chat da Network Solutions
1 comentários
Opiniões do Hacker News
Há um patch em análise: https://inbox.sourceware.org/libc-alpha/cover.1722193092.git...
Ele começou por causa de https://issues.redhat.com/browse/RHEL-42410, e era um problema de estabilidade da stack gráfica que, por algum motivo, era menos perceptível no RHEL 9
Espero que pelo menos o primeiro patch, ou seja, a correção de segurança de threads do getenv, entre no glibc 2.41, e o backport também parece bastante seguro
setenv é relativamente fácil de lidar porque o glibc já nunca libera as strings de variáveis de ambiente; o complicado é o unsetenv concorrente
Sem uma abordagem por snapshot, getenv pode retornar um ponteiro nulo em vez de retornar o valor da variável de ambiente que está de fato definida
Não quero colocar lock no getenv, porque getenv usado sem setenv há muito tempo é considerado async-signal-safe, e adicionar um lock tem grande chance de quebrar aplicações
A correção do tratamento de environ é um pouco mais controversa porque é complicado evitar vazamentos de memória por causa de vfork+execve, mas essas correções adicionais são menos importantes para a estabilidade da stack gráfica
Quando ela ficasse longa demais, a thread que executa setenv poderia criar um novo hashmap e trocar atomicamente o ponteiro antigo pelo novo
Bastaria usar uma flag atômica indicando se uma re-hash está em andamento, para impedir que duas threads façam re-hash ao mesmo tempo
Nesse meio-tempo, se outra thread chamar setenv, as variáveis adicionais são anexadas à lista e processadas depois, quando houver uma chamada futura a setenv
Se um número suficiente de threads chamar setenv rapidamente, a lista pode crescer indefinidamente, mas setenv não costuma ser chamado com frequência, então a simplicidade da troca atômica de ponteiro parece valer a pena
Um campo minado sob os pés de décadas atrás... frustrante
Sou muito grato por Steam rodar tão bem no Linux hoje em dia
Não tomo como garantido o esforço que acontece nos bastidores para tornar essa realidade possível para nós
Quero montar uma torre gamer com base nele
Poderia me contentar com o Bazzite, mas, sinceramente, quero usar o SteamOS
Acho que a boa prática não seria ler todas as variáveis de ambiente na inicialização e nunca usar setenv?
O único lugar em que setenv faz sentido é ao iniciar um novo processo; mesmo nesse caso, parece mais correto criar um novo environ copiando o environ atual e atualizando os novos valores
Usar getenv/setenv como se fosse um mecanismo de mensagens de comunicação entre processos é uma abordagem que traz vários problemas, além do fato de historicamente não ter sido thread-safe no Linux, como possíveis vazamentos de memória ocultos
O texto parece ignorar isso quando diz que no macOS é thread-safe
Java faz do jeito que você mencionou, mas código JNI que usa uma biblioteca que quer getenv() ainda enfrenta problemas
A pergunta real é: existe algum caso em que você chama
setenvem uma thread e realmente quer que essa mudança se aplique a outras threads já existentes?Ainda assim, a GLIBC documenta bem as funções perigosas, então é possível adicionar locks ou cópias por conta própria
Certamente há programas que esperam que setenv altere o array environ, e é bem possível que não o tratem apenas como um ponteiro opaco passado a posix_spawn/execve
Para ter setenv por thread, também seria necessária uma variável environ por thread
Mas isso não combina bem com POSIX, porque environ não é declarado em um header; o programador deve escrever manualmente a declaração
extern char **environ;no código-fonteEssa declaração não é compatível com environ sendo uma variável thread-local
O texto também trata disso como um problema recorrente do cliente Steam
No meu caso, as threads worker ficam todas dormindo na fila de execução, então isso não causa problema, mas tecnicamente é uma situação em que uma thread define uma variável de ambiente e outras threads já em execução querem lê-la
Não sei que biblioteca de threading não teria memória compartilhada ou passagem de mensagens
Imagino que isso aconteça principalmente em situações como o processo principal alterar variáveis como HTTPS_PROXY e, em outra thread, uma biblioteca verificar essa variável antes de abrir um socket TCP
Como referência, a decisão de vazar memória no Mac na verdade remonta ao FreeBSD de cerca de 26 anos atrás: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=5604
O OSX herdou isso, e não seria surpreendente se o
setenvdo Windows também fosse da linhagem BSD por causa da licençaMesmo 26 anos atrás já se sabia que essa API estava quebrada, mas ela não foi corrigida por inércia, para não quebrar ainda mais programas com bugs
Quase nunca deveria ser necessário alterar as variáveis de ambiente do próprio processo
Para subprocessos, basta usar a função
execadequada; fora isso, em vez de alterar uma variável global e torcer para que um código distante a releia e a trate corretamente, deve-se chamar uma API explícitaCom a API atual, é verdade, mas uma mudança muito pequena na API tornaria isso possível
Bastaria fazer
strdup()do valor antes degetenv()retorná-lo e fazer o programador liberar a memória depois do usoSe achar que o valor pode mudar, o programador teria que chamar
getenv()de novo, mas parece uma concessão razoávelEssa alteração vazaria memória toda vez que um programa antigo não chamasse
free()depois de chamargetenv(), mas a versão atual também vaza memória, então não parece ser um problema decisivoDe quebra, a nova versão poderia envolver o
strdup()com um mutex e tratarsetenv()de forma parecida para torná-la thread-safeUm colega chamou
setenvde “a pior API do Linux”, massetenvé mesmo uma API do Linux?Ela não foi definida pelo Linux, está no POSIX, e também não é implementada pelo kernel Linux; fica inteiramente no espaço de usuário
Pelo visto, o autor original e o colega trabalham na Valve dando suporte ao Steam, então esse é o contexto
O motivo pelo qual esse colega a chamou de pior não é a especificação POSIX
O POSIX apenas diz que essa função não precisa ser thread-safe; ele não impede que ela seja tornada thread-safe
O problema é a implementação específica da glibc, a biblioteca C usada em todas as distribuições Linux às quais a Valve dá suporte no Steam, e essas distribuições acabam todas agrupadas como “Linux”
Se a libc quiser, ela pode torná-la thread-safe
Linguagens como Go implementam esse recurso internamente e não têm essa limitação
A própria documentação POSIX também leva essa limitação em conta: “The setenv() function need not be thread-safe.”
Para quem cresceu jogando nethack e xadrez no Linux, a existência do Steam em si é surpreendente
Mas o cliente Steam é realmente estranho
Ele funciona bem por meses e então, de repente, os jogos não iniciam ou alguma coisa para de funcionar, e é preciso fazer coisas esquisitas como apagar todos os arquivos ou reinstalar para voltar a funcionar
Não faz sentido, e dá a sensação de que o cliente Steam está apodrecendo
É uma mistura confusa de princípios de design diferentes, e novos recursos simplesmente são encaixados com uma UI e uma UX completamente diferentes
A maior parte do cliente é um webview, lento e cheio de bugs, usando internamente uma versão muito antiga e insegura do Chromium
O launcher ainda é um programa de 32 bits
O triste é que os outros launchers são ainda piores
Na verdade, depois que passei a usar só Linux, tenho enfrentado menos esse tipo de coisa
É um conteúdo realmente interessante, que permite espiar tanto o cliente Steam quanto a programação em Linux
Entendo que seja difícil escrever notas de lançamento detalhadas a cada release, mas, sabendo desse tipo de trabalho, a expressão “várias correções de crashes comuns” é uma enorme minimização
Eu realmente espero que levem adiante aquela parte: “se pudermos resolver esse problema na glibc, talvez seja necessário algum compromisso funcional, ou talvez seja um mecanismo opt-in que se afaste um pouco da especificação POSIX ‘impossível’. Se alguém conseguir propor uma alternativa razoável, poderemos impulsioná-la no longo prazo”
Tenho muita curiosidade sobre por que usam tanto setenv(3)
O principal uso que me vem à cabeça é definir variáveis de ambiente antes de chamar algo como
exec(3), mas aqui não parece ser esse o casoO texto diz que, ao iniciar subprocessos, usam
execvpe, então fico curioso sobre o que sobra para usarsetenv(3)setenv/unsetenv/putenvcomnm -D, e, mesmo dando uma olhada por alto em~/.cargo/bin/*, há programas demais usando essas coisasTalvez sejam single-threaded, mas quem pode garantir que continuarão assim no futuro?
Pensando bem, também daria para detectar
pthread_createpela lista de símbolosSeria interessante se houvesse também algum método de análise estática de binários que rastreasse a partir desses símbolos até a árvore de chamadas
Mas não vejo como verificar o uso de
**environ. O compilador pode transformar isso em qualquer coisa