Swift 3 convert String from isoLatin1 to utf8 - swift

I need to convert an ISO-8859-1 (isoLatin1) encoded XML string to UTF-8. I tried some code I found on other questions, but most of them covers converting string to utf8 and vice-versa. I don't have any code, so none will be posted.
Sorry, to make it clear, I tried:
String(data:isoLatin1EncodedData, encoding: .uf8) is nil
String(data:isoLatin1EncodedData, encoding: .isoLatin1) returns the string with the wrong encoding.
String(utf8String: isoLatin1EncodedString.cString(using: String.Encoding.isoLatin1)!) is nil
I need the string with to be converted from one encoding to another...
Edit2: Sample feed - http://feeds.folha.uol.com.br/colunas/monicabergamo/rss091.xml

Not sure if this is what you are looking for:
Code:
let inputString = String("Não tenho ai-ai-ai, ui-ui-ui")
if let data = inputString.data(using: .isoLatin1),
let convertedString = String(data: data, encoding: .isoLatin1) {
print("convertedString = \(convertedString)")
}
else {
print("Something went wrong in conversion")
}
Output:
convertedString = Não tenho ai-ai-ai, ui-ui-ui

The string returned by your url is isoLatin1. You can try this in a Playground and verify it yourself:
import UIKit
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
let url = URL(string:"http://feeds.folha.uol.com.br/colunas/monicabergamo/rss091.xml")!
URLSession.shared.dataTask(with: url) { data, response, error in
print(data ?? "") // "16646 bytes\n"
guard let data = data else {
print(error ?? "none")
return
}
if let attStr = try? NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.isoLatin1.rawValue], documentAttributes: nil) {
print(attStr.string) // "http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/ Primeiro jornal em tempo real em língua portuguesa pt-br Copyright Folha de S.Paulo. Todos os direitos reservados. http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/folha/conheca/arquivo_e_copyright.shtml webmaster#grupofolha.com.br (Webmaster Folha de S.Paulo) colunas/monicabergamo/ http://f.i.uol.com.br/folha/furniture/5.2/images/lgo-folha_de_spaulo-167x31.gif http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/ 88 31 Primeiro jornal em tempo real em língua portuguesa http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1919007-nao-tenho-ai-ai-ai-ui-ui-ui-diz-tony-ramos-sobre-proximidade-dos-70.shtml <b>Tony Ramos</b> conta que sua reação à prisão do empresário Joesley Batista, da JBS, no domingo (10), foi "como a de qualquer brasileiro. Primeiro, um susto. Depois, você fica triste. E então espera que a Justiça faça o seu serviço". Leia mais (09/17/2017 - 02h00) 17 Sep 2017 02:00:00 -0300 http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1919022-prefeitura-autoriza-instalacao-de-bandeiras-do-brasil-nas-marginais.shtml O advogado José Marcelo Braga Nascimento, que encabeça a campanha "Embandeirando São Paulo", recebeu autorização da prefeitura para instalar mastros com a bandeira nacional em 26 pontes das marginais Tietê e Pinheiros. Ele já tinha conseguido instalar outras iguais na avenida Brasil. Leia mais (09/16/2017 - 02h00) 16 Sep 2017 02:00:00 -0300 http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1918981-miller-e-acionado-na-justica-sobre-caso-que-envolve-o-mpf-e-a-embraer.shtml O ex-procurador Marcello Miller está sendo questionado, na Justiça, por sua atuação em outro caso rumoroso: a assinatura, em 2016, de um termo de ajustamento de conduta entre o Ministério Público Federal, que ele representava, e a Embraer. Um ex-diretor da empresa o acusa de atuação indevida no processo. Leia mais (09/16/2017 - 02h00) 16 Sep 2017 02:00:00 -0300 http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1918965-janaina-paschoal-fica-em-ultimo-lugar-em-concurso-para-professor-titular-da-usp.shtml A advogada Janaína Paschoal foi a última colocada em um concurso que escolheu os dois novos professores titulares de direito penal da Faculdade de Direito da Universidade de São Paulo. Leia mais (09/15/2017 - 20h09) 15 Sep 2017 20:09:00 -0300 http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1918588-vereadores-de-sp-pedem-que-mpf-investigue-mostra-cancelada.shtml A bancada cristã da Câmara Municipal de SP fez um requerimento que pede que o Ministério Público Federal apure "ilícitos penais" e "atos de improbidade administrativa" por parte do Ministério da Cultura, de executivos do Santander e do curador da mostra "Queermuseu". Leia mais (09/15/2017 - 02h00) 15 Sep 2017 02:00:00 -0300 http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1918438-reacao-do-mercado-enfraquece-tese-de-que-jf-quebrara-sem-wesley-e-joesley.shtml A reação positiva do mercado em relação à troca de comando na J&F enfraquece o principal argumento de Joesley Batista para conseguir o perdão judicial: sem ele e sem o irmão Wesley à frente da empresa, ela poderia quebrar. Leia mais (09/15/2017 - 02h00) 15 Sep 2017 02:00:00 -0300 http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1918459-preparador-nuno-cobra-deixara-prisao.shtml O preparador físico Nuno Cobra deve deixar a carceragem da Polícia Federal de São Paulo, onde está preso desde a segunda (11), nas próximas horas. Leia mais (09/14/2017 - 16h51) 14 Sep 2017 16:51:00 -0300 http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1918386-morre-em-sp-o-jornalista-fernando-pacheco-jordao-autor-de-dossie-herzog.shtml O jornalista Fernando Pacheco Jordão morreu nesta quinta (14), em São Paulo, aos 80 anos. Leia mais (09/14/2017 - 12h03) 14 Sep 2017 12:03:00 -0300 http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1918236-ex-presidente-da-eletronuclear-preso-em-2015-opera-cancer-de-pele.shtml O ex-presidente da Eletronuclear Othon Luiz Pinheiro da Silva foi operado na quarta (13) de um câncer de pele, no hospital da Marinha no Rio de Janeiro. Aos 78 anos e condenado a 43 anos de prisão, o vice-almirante, considerado o pai do programa nuclear brasileiro, está detido em uma unidade militar desde julho de 2015. Em janeiro, ele tentou o suicídio. Leia mais (09/14/2017 - 02h00) 14 Sep 2017 02:00:00 -0300 http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1918087-joesley-batista-desconfia-que-pode-ser-traido-por-ricardo-saud.shtml O clima entre os delatores da J&F é de desconfiança. Joesley Batista e seu irmão, Wesley, acreditam que o executivo Ricardo Saud pode traí-los caso a negociação com o Ministério Público Federal para preservar benefícios que obtiveram no acordo de delação premiada naufrague. Leia mais (09/14/2017 - 02h00) 14 Sep 2017 02:00:00 -0300 http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1917896-luiza-brunet-e-ex-se-cumprimentam-mas-audiencia-de-conciliacao-fracassa.shtml A atriz Luiza Brunet se reencontrou com o ex, Lírio Parisotto, na segunda (11), na 4ª Vara da Família e Sucessões. Os dois se cumprimentaram de forma polida - mas a audiência de conciliação entre eles foi um fracasso. Leia mais (09/13/2017 - 02h00) 13 Sep 2017 02:00:00 -0300 http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1917891-para-criminalistas-82888288saida-para-joesley-pode-ser-anular-processo-de-delacao.shtml A defesa dos delatores da J&F tem pouca esperança de manter a delação deles integralmente em pé. Se a repactuação dos benefícios com a PGR (Procuradoria-Geral da República) não evoluir a contento, a saída para Joesley Batista e Ricardo Saud, entendem advogados criminalistas, seria partir para o tudo ou nada e tentar anular todo o processo. Leia mais (09/13/2017 - 02h00) 13 Sep 2017 02:00:00 -0300 http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1917885-rodrigo-maia-diz-que-nao-vai-ser-facil-negociar-a-reforma-da-previdencia.shtml O presidente da Câmara dos Deputados, Rodrigo Maia (DEM-RJ), afirma que só depois da passagem do "furacão" que deve ser a votação da segunda denúncia contra Michel Temer será possível negociar com as lideranças no parlamento se a reforma da Previdência será ou não votada. Mesmo assim, as tratativas não serão nada fáceis. Leia mais (09/13/2017 - 02h00) 13 Sep 2017 02:00:00 -0300 http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1917677-fhc-e-cardozo-serao-testemunhas-de-defesa-de-lula-nesta-terca-feira-em-sp.shtml O ex-presidente Fernando Henrique Cardoso será mais uma vez testemunha de defesa de Lula em um processo. Leia mais (09/12/2017 - 07h10) 12 Sep 2017 07:10:00 -0300 http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1917580-joao-carlos-martins-viajara-pelo-brasil-para-formar-orquestras.shtml <b>PARTITURA</b><br/> A Fundação Bachiana Filarmônica, do maestro João Carlos Martins, teve seu plano de atividades de 2018 aprovado na Lei Rouanet. Estão previstos 28 concertos durante o ano, 22 deles gratuitos, além de cursos de música para jovens e crianças. O total do incentivo é de R$ 4,3 milhões. Leia mais (09/12/2017 - 02h00) 12 Sep 2017 02:00:00 -0300 \n"
}
}.resume()
As I said your string will always be unicode (UTF-8) but you can convert the data to any encoding. For instance:
let url = URL(string:"http://feeds.folha.uol.com.br/colunas/monicabergamo/rss091.xml")!
URLSession.shared.dataTask(with: url) { data, response, error in
print(data ?? "") // "16355 bytes" isoLatin1 data size
guard let data = data else { print(error ?? "none")
return
}
let string = String(data: data, encoding: .isoLatin1) ?? "" // data is Latin1
print(string) // prints OK string is always UTF8
let isoLatin1Data = string.data(using: .isoLatin1) // 16355 bytes OK
print(isoLatin1Data == data) // true
let utf8Data = Data(string.utf8) // 16498 bytes
let string2 = String(data: utf8Data, encoding: .utf8) ?? ""
print(string == string2) // true
print(Data(string.utf8) == Data(string2.utf8)) // true
}.resume()
The resulting String is:
// <?xml version="1.0" encoding="ISO-8859-1" ?>
Folha de S.Paulo - Colunas - Mônica Bergamo
http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/http://www1.folha.uol.com.br/colunas/monicabergamo/
Primeiro jornal em tempo real em língua portuguesa
pt-br
Copyright Folha de S.Paulo. Todos os direitos reservados.
http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/http://www1.folha.uol.com.br/folha/conheca/arquivo_e_copyright.shtml
webmaster#grupofolha.com.br (Webmaster Folha de S.Paulo)
colunas/monicabergamo/
Folha de S.Paulo - Colunas - Mônica Bergamo
http://f.i.uol.com.br/folha/furniture/5.2/images/lgo-folha_de_spaulo-167x31.gif
http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/*http://www1.folha.uol.com.br/colunas/monicabergamo/
88
31
Primeiro jornal em tempo real em língua portuguesa
Equipe de Alckmin vê Doria 'louco' com pesquisa
http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/http://www1.folha.uol.com.br/colunas/monicabergamo/2017/10/1924066-geraldo-alckmin-e-michel-temer-ensaiam-reaproximacao.shtml
O governador Geraldo Alckmin (PSDB-SP) se reuniu com seu staff político e de comunicação no domingo para analisar os números do <a href="http://www1.folha.uol.com.br/poder/2017/10/1923269-forca-eleitoral-de-lula-resiste-apos-condenacao-na-lava-jato.shtml">Datafolha</a> e de pesquisas feitas por sua equipe, por telefone, cujos números coincidem com o do instituto. Concluíram que, com o empate dele com João Doria, o prefeito vai "enlouquecer" e intensificar a campanha para ser candidato a presidente.
Leia mais (10/04/2017 - 02h00)
04 Oct 2017 02:00:00 -0300
Diplomata que criticou Temer é removido de consulado em NY
http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/http://www1.folha.uol.com.br/colunas/monicabergamo/2017/10/1924064-diplomata-que-criticou-temer-e-removido-de-consulado-em-ny.shtml
O diplomata Julio de Oliveira Silva foi removido na terça (3) do cargo de segundo-secretário do consulado do Brasil em NY pelo chanceler Aloysio Nunes Ferreira (PSDB-SP). Ele não recebeu aviso prévio nem explicação para a transferência e soube dela pelo Diário Oficial.
Leia mais (10/04/2017 - 02h00)
04 Oct 2017 02:00:00 -0300
Ministro da Justiça quer mudar classificação indicativa no país
http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/http://www1.folha.uol.com.br/colunas/monicabergamo/2017/10/1924062-ministro-da-justica-quer-mudar-classificacao-indicativa-no-pais.shtml
O ministro da Justiça, Torquato Jardim, quer mudar o sistema de classificação indicativa no Brasil. "Vamos continuar tendo uma repartição em Brasília para dizer a idade em que se pode assistir a novela e cinema no país? É uma loucura. Está na hora de a sociedade assumir isso", diz ele.
Leia mais (10/04/2017 - 02h00)
04 Oct 2017 02:00:00 -0300
Planos de saúde perderam 700 mil usuários no último ano, diz associação
http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/http://www1.folha.uol.com.br/colunas/monicabergamo/2017/10/1923878-planos-de-saude-perderam-700-mil-usuarios-no-ultimo-ano-diz-associacao.shtml
Os planos de saúde perderam 700 mil usuários em agosto em comparação com o mesmo mês de 2016. Só em São Paulo foram 370 mil clientes a menos, segundo levantamento da FenaSaúde, associação que representa as maiores operadoras do setor e que credita a queda à crise.
Leia mais (10/03/2017 - 11h50)
03 Oct 2017 11:50:00 -0300
Defesa acredita que Palocci passará o Natal em casa
http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/http://www1.folha.uol.com.br/colunas/monicabergamo/2017/10/1923730-defesa-acredita-que-palocci-passara-o-natal-em-casa.shtml
A defesa de Antonio Palocci acredita que o ex-ministro da Fazenda passará o Natal em casa. Ainda que, depois de fechado o acordo de delação premiada, ele tenha que passar mais um tempo preso, a esperança é que seja beneficiado com a permissão para comemorar a data em casa, com a família.
Leia mais (10/03/2017 - 02h00)
03 Oct 2017 02:00:00 -0300
Vídeo sobre exposição gera tensão entre Doria e o MAM
http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/http://www1.folha.uol.com.br/colunas/monicabergamo/2017/10/1923727-video-sobre-exposicao-gera-tensao-entre-e-doria-e-o-mam.shtml
A manifestação</a> de João Doria contra a <a href="http://www1.folha.uol.com.br/ilustrada/2017/09/1922810-na-internet-museu-e-acusado-de-pedofilia-apos-performance-com-nudez.shtml">performance do MAM (Museu de Arte Moderna) que mostrava um homem nu surpreendeu e causou desconforto aos diretores da instituição. Eles esperavam que o tucano se posicionasse na linha da defesa da liberdade de expressão.
Leia mais (10/03/2017 - 02h00)
03 Oct 2017 02:00:00 -0300
Vanderlei Luxemburgo depõe como testemunha de defesa de filho de Lula
http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/http://www1.folha.uol.com.br/colunas/monicabergamo/2017/10/1923584-vanderlei-luxemburgo-depoe-como-testemunha-de-defesa-de-filho-de-lula.shtml
Vanderlei Luxemburgo, técnico do Sport, vai depor na tarde desta segunda (2) como testemunha de defesa de Luis Cláudio Lula da Silva, filho do ex-presidente Lula, em processo da Operação Zelotes.
Leia mais (10/02/2017 - 13h44)
02 Oct 2017 13:44:00 -0300
Deputado pede que CPI faça acareação entre Meirelles e irmãos Batistas
http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/http://www1.folha.uol.com.br/colunas/monicabergamo/2017/10/1923094-deputado-pede-que-cpi-faca-acareacao-entre-meirelles-e-irmaos-batista.shtml
A CPI da JBS decide nesta semana se submete Henrique Meirelles, ministro da Fazenda, a uma acareação com Joesley e Wesley Batista, donos da empresa. O ministro foi presidente do conselho de administração da J&F, holding do grupo.
Leia mais (10/02/2017 - 02h00)
02 Oct 2017 02:00:00 -0300
Delatores da Odebrecht começam a receber intimação do STF
http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/http://www1.folha.uol.com.br/colunas/monicabergamo/2017/10/1923085-delatores-da-odebrecht-comecam-a-receber-intimacao-do-stf.shtml
Delatores da Odebrecht começaram a receber uma intimação do STF (Supremo Tribunal Federal) sobre os acordos de colaboração que fizeram com a Justiça e passaram a tomar conhecimento das mudanças determinadas por Cármen Lúcia em cada um deles.
Leia mais (10/02/2017 - 02h00)
02 Oct 2017 02:00:00 -0300
"Tento manter a cabeça pensando que voltarei a andar", diz Lais Souza
http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/http://www1.folha.uol.com.br/colunas/monicabergamo/2017/10/1923105-tento-manter-a-cabeca-pensando-que-voltarei-a-andar-diz-lais-souza.shtml
<b>O "Tema da Vitória"</b>, música que coroa as conquistas de atletas brasileiros na televisão, toca quando <b>Lais Souza</b>, 28, entra no auditório. A ex-ginasta ajudou a seleção nacional a alcançar resultados históricos nas Olimpíadas de 2004 e 2008. Em 2014, se preparava para representar o país em uma nova modalidade, o esqui, quando sofreu o acidente que a deixou tetraplégica.
Leia mais (10/01/2017 - 02h00)
01 Oct 2017 02:00:00 -0300
Desafio de Doria é subir na pesquisa, avaliam aliados
http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1923081-desafio-de-doria-e-subir-na-pesquisa-avaliam-aliados.shtml
Secretários de João Doria analisam que ele tem que crescer já nas próximas pesquisas de opinião pública, de institutos com credibilidade, para que sua pré-candidatura à Presidência da República não naufrague antes mesmo de decolar.
Leia mais (09/30/2017 - 02h00)
30 Sep 2017 02:00:00 -0300
Carregador da Receita é preso por furto no shopping 25 de Março
http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1922942-carregador-da-receita-e-preso-por-furto-no-shopping-25-de-marco.shtml
Um prestador de serviço da Receita Federal foi preso durante a operação que fechou o shopping 25 de Março, no dia 12 de setembro. A detenção foi feita em flagrante depois que um dos comerciantes viu, por câmeras de segurança que acessou pelo celular, o carregador terceirizado roubando uma pochete com R$ 522. A informação foi confirmada pela Receita.
Leia mais (09/30/2017 - 02h00)
30 Sep 2017 02:00:00 -0300
Caetano Veloso não vai a encontro com Haddad
http://redir.folha.com.br/redir/online/colunas/monicabergamo/rss091/http://www1.folha.uol.com.br/colunas/monicabergamo/2017/09/1922903-caetano-veloso-nao-vai-a-encontro-com-haddad.shtml
O cantor Caetano Veloso não estará presente no encontro de artistas hoje com Fernando Haddad, no Rio de Janeiro.
Leia mais (09/29/2017 - 13h52)
29 Sep 2017 13:52:00 -0300
Fernando Haddad encontrará artistas na casa de Caetano Veloso
<-- post text limit

Related

Extract data from a text file using Powershell

I have a file in the below format. Need to extract some data
depth=3 C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", CN = Starfield Services Root Certificate Authority - G2
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=2 C = US, O = Amazon, CN = Amazon Root CA 1
verify return:1
depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon
verify return:1
depth=0 CN = abc.xyz.com
verify return:1
---
Certificate chain
0 s:CN = abc.xyz.com
i:C = US, O = Amazon, OU = Server CA 1B, CN = Amazon
a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
v:NotBefore: Sep 13 00:00:00 2022 GMT; NotAfter: Oct 11 23:59:59 2023 GMT
1 s:C = US, O = Amazon, OU = Server CA 1B, CN = Amazon
i:C = US, O = Amazon, CN = Amazon Root CA 1
a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
v:NotBefore: Oct 22 00:00:00 2015 GMT; NotAfter: Oct 19 00:00:00 2025 GMT
2 s:C = US, O = Amazon, CN = Amazon Root CA 1
i:C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", CN = Starfield Services Root Certificate Authority - G2
a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
v:NotBefore: May 25 12:00:00 2015 GMT; NotAfter: Dec 31 01:00:00 2037 GMT
3 s:C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", CN = Starfield Services Root Certificate Authority - G2
i:C = US, O = "Starfield Technologies, Inc.", OU = Starfield Class 2 Certification Authority
a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
v:NotBefore: Sep 2 00:00:00 2009 GMT; NotAfter: Jun 28 17:39:16 2034 GMT
---
Server certificate
-----BEGIN CERTIFICATE-----
From the Certificate chain section, I need to extract all lines containing s:, i: and v: to a new file.
I tried with the following
Get-Content "input.txt" | Select-String -pattern '(s:.*)|(i:.*)|(v:.*)' | Out-File "output.txt"
and I get the below extract in the output file
0 s:CN = abc.xyz.com
i:C = US, O = Amazon, OU = Server CA 1B, CN = Amazon
v:NotBefore: Sep 13 00:00:00 2022 GMT; NotAfter: Oct 11 23:59:59 2023 GMT
1 s:C = US, O = Amazon, OU = Server CA 1B, CN = Amazon
i:C = US, O = Amazon, CN = Amazon Root CA 1
v:NotBefore: Oct 22 00:00:00 2015 GMT; NotAfter: Oct 19 00:00:00 2025 GMT
2 s:C = US, O = Amazon, CN = Amazon Root CA 1
i:C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", CN = Starfield Services Root Certificate Authority -
G2
v:NotBefore: May 25 12:00:00 2015 GMT; NotAfter: Dec 31 01:00:00 2037 GMT
3 s:C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", CN = Starfield Services Root Certificate Authority -
G2
i:C = US, O = "Starfield Technologies, Inc.", OU = Starfield Class 2 Certification Authority
v:NotBefore: Sep 2 00:00:00 2009 GMT; NotAfter: Jun 28 17:39:16 2034 GMT
Everything is as expected, but the text G2 always gets extracted on a new line rather than being in continuation of the previous line. Not sure what I am missing here.

Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in…”

Background: we have an ILI2511 touch controller which raises an interrupt when touch movement is detected. Then the host polls the touch controller via I2C. During EMC testing, the touch controller might fire many interrupts and report wrong finger positions. Nevertheless the kernel should never crash. Here is the relevant code snippets:
Init:
error = devm_request_threaded_irq(dev, client->irq, NULL, ili251x_irq, IRQF_ONESHOT, client->name, data);
Bottom half:
static irqreturn_t ili251x_irq(int irq, void *irq_data)
{
struct ili251x_data *data = irq_data;
struct i2c_client *client = data->client;
struct touchdata touchdata;
int error;
error = ili251x_read_reg(client, REG_TOUCHDATA,
&touchdata,
sizeof(touchdata) -
sizeof(struct finger)*TOUCHDATA2_FINGERS);
/* more code */
if (!error)
ili251x_report_events(data, &touchdata);
else
dev_err(&client-\>dev, "Unable to get touchdata, err = %d\\n", error);
return IRQ_HANDLED;
}
ili251x_read_reg() uses the i2c controller.
I found no array overflow or pointer issues related to stack variables.
Still under EMC heavy fire I'm getting a crash. I added a crash dump further down.
I wonder if the information I'm getting through the crash dump could be used the track down / circle in the issue? For example what does "ili251x_irq+0x200/0x2e4" mean? Is this some code pointer / data pointer referenced in a map file? I assume the stack protector is only active before returning to the caller function.
Example:
Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: ili251x_irq+0x200/0x2e4
[ 691.053700] 000: CPU0: stopping
[ 691.056854] 000: CPU: 0 PID: 0 Comm: swapper/0 Tainted: G O 5.4.106-rt54-ge578cc0824 #1
[ 691.066197] 000: Hardware name: Generic DRA74X (Flattened Device Tree)
[ 691.072749] 000: Backtrace:
[ 691.075634] 000:
[ 691.077561] 000: [<c0b93090>] (dump_backtrace) from [<c0b93408>] (show_stack+0x20/0x24)
[ 691.085606] 000: r7:c120dd44 r6:60000193 r5:00000000 r4:c12996e4
[ 691.091718] 000: [<c0b933e8>] (show_stack) from [<c0ba0d04>] (dump_stack+0x98/0xac)
[ 691.099408] 000: [<c0ba0c6c>] (dump_stack) from [<c0210798>] (handle_IPI+0x404/0x47c)
[ 691.107275] 000: r7:c120dd44 r6:00000004 r5:c129ebc4 r4:c12a8270
[ 691.113387] 000: [<c0210394>] (handle_IPI) from [<c0202340>] (gic_handle_irq+0x9c/0xa0)
[ 691.121428] 000: r10:c12a8000 r9:c1201ed0 r8:fa213000 r7:fa212000 r6:fa21200c r5:c125a574
[ 691.129722] 000: r4:c120df34
[ 691.132694] 000: [<c02022a4>] (gic_handle_irq) from [<c0201a78>] (__irq_svc+0x58/0xa0)
[ 691.140643] 000: Exception stack(0xc1201ed0 to 0xc1201f18)
[ 691.146148] 000: 1ec0: 00000000 0041cd04 00000000 c022879c
[ 691.154793] 000: 1ee0: c1200000 c120d730 00000000 c120d778 c129e63d c105ea48 c12a8000 c1201f2c
[ 691.163437] 000: 1f00: c1201f0c c1201f20 c02283fc c0209b34 a0000013 ffffffff
[ 691.170513] 000: r9:c1200000 r8:c129e63d r7:c1201f04 r6:ffffffff r5:a0000013 r4:c0209b34
[ 691.178719] 000: [<c0209b04>] (arch_cpu_idle) from [<c0ba713c>] (default_idle_call+0x3c/0x48)
[ 691.187282] 000: [<c0ba7100>] (default_idle_call) from [<c026ced8>] (do_idle+0xe4/0x150)
[ 691.195407] 000: [<c026cdf4>] (do_idle) from [<c026d26c>] (cpu_startup_entry+0x28/0x2c)
[ 691.203444] 000: r9:c105ea48 r8:00000001 r7:c12a8000 r6:00000000 r5:00000002 r4:000000ce
[ 691.211649] 000: [<c026d244>] (cpu_startup_entry) from [<c0ba0ee4>] (rest_init+0xd4/0xdc)
[ 691.219859] 000: [<c0ba0e10>] (rest_init) from [<c1000b88>] (arch_call_rest_init+0x18/0x1c)
[ 691.228249] 000: r5:00000001 r4:c12a8054
[ 691.232268] 000: [<c1000b70>] (arch_call_rest_init) from [<c10010e0>] (start_kernel+0x4dc/0x51c)
[ 691.241091] 000: [<c1000c04>] (start_kernel) from [00000000>] (0x0)
[ 691.247478] 001: ---[ end Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: ili251x_irq+0x200/0x2e4 ]---
[ 691.259201] 001: ------------[ cut here ]------------
We have the chip ILI2511. The driver which I'm describing is from here: ili251x.
I'm using rt kernel 5.4.y and have to stay on this version.
I tried upstream driver (https://elixir.bootlin.com/linux/v5.4.225/source/drivers/input/touchscreen/ili210x.c) but it does not work: it generates input data but when I touch a button the webbrowser, nothing happens.
Typical input queue with ili251x.c driver running:
hexdump /dev/input/event0
0000000 9ae4 3fae 6874 0003 0003 0039 0006 0000
0000010 9ae4 3fae 6874 0003 0003 0035 1730 0000
0000020 9ae4 3fae 6874 0003 0003 0036 213f 0000
0000030 9ae4 3fae 6874 0003 0001 014a 0001 0000
0000040 9ae4 3fae 6874 0003 0003 0000 1730 0000
Typical input queue with (non-working) ili210x.c driver running:
0000000 53a0 3fae f15d 0002 0003 0039 0008 0000
0000010 53a0 3fae f15d 0002 0003 0035 1535 0000
0000020 53a0 3fae f15d 0002 0003 0036 1767 0000
0000030 53a0 3fae f15d 0002 0001 014a 0001 0000
0000040 53a0 3fae f15d 0002 0003 0000 1535 0000
0000050 53a0 3fae f15d 0002 0003 0001 1767 0000
I have not yet analyzed this stream.
I looked at (https://elixir.bootlin.com/linux/v5.15.82/source/drivers/input/touchscreen/ilitek_ts_i2c.c), but this one does not support ILI2511 according to compatibility list.
There is also a driver on github: (https://github.com/NewhavenDisplay/ILI2511-Ilitek-CTP-Drivers/tree/main/Linux%20-%20Ubuntu%2010.04~16.04/ilitek_limv5_9_0_1), which is I have not tried so far.

Is it possible to transpose tbl_summary table (Pivot table)

I would want to create a pivot table using the dataframe using tbl_summary
head(tblbdcc)
# A tibble: 6 x 11
ntdcc miphlycc anopmcrpcc anomcrtcc cleftscc impanuscc hypcc talipcc limbcc omphcc gascc
<fct> <fct> <dbl+lbl> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct>
1 Cases NA NA NA NA NA NA NA NA NA NA
2 NA Cases NA NA NA NA NA NA NA NA NA
3 Controls NA NA NA NA NA NA NA NA NA NA
4 Controls NA NA NA NA NA NA NA NA NA NA
5 Controls NA NA NA NA NA NA NA NA NA NA
6 NA NA NA NA NA NA Cases NA NA NA NA
tblbdscc <- tblbdcc %>%
tbl_summary(
missing = "no",
statistic = all_categorical() ~ "{n}"
)
I would want to transform the table from
to
There is no pivot table in gtsummary, but you can construct the table one row at a time and stack the resulting tables. Example below.
library(gtsummary)
library(tidyverse)
#> Warning: package 'readr' was built under R version 4.1.2
packageVersion("gtsummary")
#> [1] '1.5.0'
set.seed(11234)
# simulate data
df <-
tibble(
ntdcc = sample(c("Case", "Control", NA), 20, replace = TRUE),
gascc = sample(c("Case", "Control", NA), 20, replace = TRUE),
limbcc = sample(c("Case", "Control", NA), 20, replace = TRUE)
)
# loop over every column in df to construct table
tbl <-
names(df) %>%
map(
# build summary table for single category
~ df %>%
select(all_of(.x)) %>%
mutate(..true.. = TRUE) %>%
filter(complete.cases(.)) %>%
tbl_summary(
by = all_of(.x),
missing = "no",
statistic = ~"{n}",
label = list(..true.. = .x)
) %>%
# update column headers
modify_header(
all_stat_cols() ~ "**{level}**",
label = "**Category Assigned**"
)
) %>%
# stack all tbls together
tbl_stack() %>%
# remove all footnotes
modify_footnote(all_stat_cols() ~ NA)
Created on 2022-01-19 by the reprex package (v2.0.1)

Can't access Github at all from my home connection

From today in the morning I have a problem : I can't access github at all on any device in my house, any request I try to do finishes in a timeout, for example :
Trying to git fetch, git pull or git push a repository
accessing the https://github.com/ website
However I have no problem accessing the following domains :
api.github.com
status.github.com
When I do a tracert github.com, the result is the following :
Détermination de l'itinéraire vers github.com [192.30.253.113]
avec un maximum de 30 sauts :
1 <1 ms <1 ms <1 ms livebox.home [192.168.1.1]
2 * * * Délai d'attente de la demande dépassé.
3 1 ms 1 ms 1 ms ae101-0.ncidf204.Paris13eArrondissement.francetelecom.net [193.253.81.6]
4 1 ms 1 ms 1 ms ae41-0.niidf202.Paris15eArrondissement.francetelecom.net [193.252.98.177]
5 1 ms 1 ms 2 ms 193.252.137.74
6 * * * Délai d'attente de la demande dépassé.
7 964 ms * * ae-2-4.bear1.Washington111.Level3.net [4.69.210.174]
8 92 ms 92 ms 92 ms GITHUB-INC.bear1.Washington111.Level3.net [4.53.116.102]
9 * * * Délai d'attente de la demande dépassé.
10 * * * Délai d'attente de la demande dépassé.
11 * * * Délai d'attente de la demande dépassé.
12 * * * Délai d'attente de la demande dépassé.
13 * * * Délai d'attente de la demande dépassé.
I tried desperate solutions :
Rebooting the internet box
flushing my DNS cache (but as it is not working on any device, I think it has no effect)
Thanks for helping !

How can I parse a tab separated data file and group the extracted data in Perl?

I am newbie to Perl. I need to parse a tab separated text file. For example:
From name To name Timestamp Interaction
a b Dec 2 06:40:23 IST 2000 comment
c d Dec 1 10:40:23 IST 2001 like
e a Dec 1 16:03:01 IST 2000 follow
b c Dec 2 07:50:29 IST 2002 share
a c Dec 2 08:50:29 IST 2001 comment
c a Dec 11 12:40:23 IST 2008 like
e c Dec 2 07:50:29 IST 2000 like
c b Dec 11 12:40:23 IST 2008 follow
b a Dec 2 08:50:29 IST 2001 share
After parsing I need to create groups base upon users interaction. In this example
a<->b
b<->a
c<->a
a<->c
b<->c
c<->b
for this we can create one group. and we need to display list of groups.
I need some pointers on how to parse the file and form group?
Edit
Constraint-> at least 3 user required for creating group.
Interaction is nothing but some communication is done between two user. It does not matter of which communication
My Approach for solving is
We remove repeated interaction between users . such as "a<>b like "again if "a<>b follow" is present then we remove this row.
Creating 2 dimensional array which store interaction two users i.e
To Name a b c d
From Name
a X <> <> X
b <> X <> X
c <> <> X X
d X <> X X
X= Represent no interaction
<>= represent interaction
In this approach we start from first row i.e "a" user check with "b". if "a" is interact with "b" then we perform reverse of i.e "b" interact with "a". same steps perform for each column.
But this approach depends on number of users. If 1000 users are present then we have to create 1000 X 1000 matrix. IS there any alternative to solve this
I have added sample input
a c Dec 2 06:40:23 IST 2000 comment
f g Dec 2 06:40:23 IST 2009 like
c a Dec 2 06:40:23 IST 2009 like
g h Dec 2 06:40:23 IST 2008 like
a d Dec 2 06:40:23 IST 2008 like
r t Dec 2 06:40:23 IST 2007 share
d a Dec 2 06:40:23 IST 2007 share
t u Dec 2 06:40:23 IST 2006 follow
a e Dec 2 06:40:23 IST 2006 follow
k l Dec 2 06:40:23 IST 2009 like
e a Dec 2 06:40:23 IST 2009 like
j k Dec 2 06:40:23 IST 2003 like
c d Dec 2 06:40:23 IST 2003 like
l j Dec 2 06:40:23 IST 2002 like
d c Dec 2 06:40:23 IST 2002 like
m n Dec 2 06:40:23 IST 2005 like
c e Dec 2 06:40:23 IST 2005 like
m l Dec 2 06:40:23 IST 2011 like
e c Dec 2 06:40:23 IST 2011 like
h j Dec 2 06:40:23 IST 2010 like
d e Dec 2 06:40:23 IST 2010 like
o p Dec 2 06:40:23 IST 2009 like
e d Dec 2 06:40:23 IST 2009 like
p q Dec 2 06:40:23 IST 2000 comment
q p Dec 2 06:40:23 IST 2009 like
a p Dec 2 06:40:23 IST 2008 like
p a Dec 2 06:40:23 IST 2007 share
l p Dec 2 06:40:23 IST 2003 like
j l Dec 2 06:40:23 IST 2002 like
t r Dec 2 06:40:23 IST 2000 comment
r h Dec 2 06:40:23 IST 2009 like
j f Dec 2 06:40:23 IST 2008 like
g d Dec 2 06:40:23 IST 2007 share
w q Dec 2 06:40:23 IST 2003 like
o y Dec 2 06:40:23 IST 2002 like
x y Dec 2 06:40:23 IST 2000 comment
y x Dec 2 06:40:23 IST 2009 like
x z Dec 2 06:40:23 IST 2008 like
z x Dec 2 06:40:23 IST 2007 share
y z Dec 2 06:40:23 IST 2003 like
z y Dec 2 06:40:23 IST 2002 like
Output should be:
(a,c, d, e)
(x,y,z)
Parsing is easy. Just a split /\t/ might be enough. However, Text::xSV or Text::CSV might be better.
For the connections, you can use the Graph module. To be able to use that module effectively, you need to understand at least the basics of graph theory.
Note that a strongly connected component is defined as:
A directed graph is called strongly connected if there is a path from each vertex in the graph to every other vertex. In particular, this means paths in each direction; a path from a to b and also a path from b to a.
The strongly connected components of a directed graph G are its maximal strongly connected subgraphs.
However, note that if you have a <-> b and b <-> c, a, b, and c will form a strongly connected component meaning that is a weaker requirement than all members of a group interacted with each other in both directions.
We can still use this to reduce the search space. Once you have candidate groups, you can then check each to see if it fits your definition of a group. If a candidate group does not meet your requirements, then you can check all subsets with one fewer members. If you don't find any groups among those, you can then look at all subsets with two fewer members and so on until you hit the minimum group size limit.
The script below uses this idea. However, it very likely won't scale. I strongly suspect one might be able to put together some SQL magic but my mind is far too limited for that.
#!/usr/bin/env perl
use strict;
use warnings;
use Graph;
use Algorithm::ChooseSubsets;
use constant MIN_SIZE => 3;
my $interactions = Graph->new(
directed => 1,
);
while (my $interaction = <DATA>) {
last unless $interaction =~ /\S/;
my ($from, $to) = split ' ', $interaction, 3;
$interactions->add_edge($from, $to);
}
my #groups = map {
is_group($interactions, $_) ? $_
: check_subsets($interactions, $_)
} grep #$_ >= MIN_SIZE, $interactions->strongly_connected_components;
print "Groups: \n";
print "[ #$_ ]\n" for #groups;
sub check_subsets {
my ($graph, $candidate) = #_;
my #groups;
for my $size (reverse MIN_SIZE .. (#$candidate - 1)) {
my $subsets = Algorithm::ChooseSubsets->new(
set => $candidate,
size => $size,
);
my $groups_found;
while (my $subset = $subsets->next) {
if (is_group($interactions, $subset)) {
++$groups_found;
push #groups, $subset;
}
}
last if $groups_found;
}
return #groups;
}
sub is_group {
my ($graph, $candidate) = #_;
for my $member (#$candidate) {
for my $other (#$candidate) {
next if $member eq $other;
return unless $graph->has_edge($member, $other);
return unless $graph->has_edge($other, $member);
}
}
return 1;
}
__DATA__
a c Dec 2 06:40:23 IST 2000 comment
f g Dec 2 06:40:23 IST 2009 like
c a Dec 2 06:40:23 IST 2009 like
g h Dec 2 06:40:23 IST 2008 like
a d Dec 2 06:40:23 IST 2008 like
r t Dec 2 06:40:23 IST 2007 share
d a Dec 2 06:40:23 IST 2007 share
t u Dec 2 06:40:23 IST 2006 follow
a e Dec 2 06:40:23 IST 2006 follow
k l Dec 2 06:40:23 IST 2009 like
e a Dec 2 06:40:23 IST 2009 like
j k Dec 2 06:40:23 IST 2003 like
c d Dec 2 06:40:23 IST 2003 like
l j Dec 2 06:40:23 IST 2002 like
d c Dec 2 06:40:23 IST 2002 like
m n Dec 2 06:40:23 IST 2005 like
c e Dec 2 06:40:23 IST 2005 like
m l Dec 2 06:40:23 IST 2011 like
e c Dec 2 06:40:23 IST 2011 like
h j Dec 2 06:40:23 IST 2010 like
d e Dec 2 06:40:23 IST 2010 like
o p Dec 2 06:40:23 IST 2009 like
e d Dec 2 06:40:23 IST 2009 like
p q Dec 2 06:40:23 IST 2000 comment
q p Dec 2 06:40:23 IST 2009 like
a p Dec 2 06:40:23 IST 2008 like
p a Dec 2 06:40:23 IST 2007 share
l p Dec 2 06:40:23 IST 2003 like
j l Dec 2 06:40:23 IST 2002 like
t r Dec 2 06:40:23 IST 2000 comment
r h Dec 2 06:40:23 IST 2009 like
j f Dec 2 06:40:23 IST 2008 like
g d Dec 2 06:40:23 IST 2007 share
w q Dec 2 06:40:23 IST 2003 like
o y Dec 2 06:40:23 IST 2002 like
x y Dec 2 06:40:23 IST 2000 comment
y x Dec 2 06:40:23 IST 2009 like
x z Dec 2 06:40:23 IST 2008 like
z x Dec 2 06:40:23 IST 2007 share
y z Dec 2 06:40:23 IST 2003 like
z y Dec 2 06:40:23 IST 2002 like
Output:
Groups:
[ y z x ]
[ e d a c ]